MySQL 8.4 發行說明
字元集是一組符號和編碼。定序是一組用於比較字元集中字元的規則。讓我們用一個虛構的字元集範例來清楚說明它們之間的區別。
假設我們有一個包含四個字母的字母表:A
、B
、a
、b
。我們給每個字母一個數字:A
= 0,B
= 1,a
= 2,b
= 3。字母 A
是一個符號,數字 0 是 A
的編碼,而所有四個字母及其編碼的組合是一個字元集。
假設我們要比較兩個字串值 A
和 B
。最簡單的方法是查看編碼:A
為 0,B
為 1。因為 0 小於 1,所以我們說 A
小於 B
。我們剛才做的是對我們的字元集應用定序。定序是一組規則(在本例中只有一個規則):「比較編碼。」我們將這個最簡單的定序稱為二進制定序。
但是,如果我們想要說小寫和大寫字母是等效的呢?那麼我們至少有兩個規則:(1) 將小寫字母 a
和 b
視為等效於 A
和 B
;(2) 然後比較編碼。我們稱之為不區分大小寫定序。它比二進制定序稍微複雜一些。
在現實生活中,大多數字元集都有許多字元:不僅僅是 A
和 B
,而是整個字母表,有時是多個字母表,或是帶有數千個字元的東方書寫系統,以及許多特殊符號和標點符號。同樣在現實生活中,大多數定序都有許多規則,不僅適用於是否區分字母大小寫,還適用於是否區分重音符號(「重音符號」是附加在字元上的標記,如德文中的 Ö
),以及多字元對應(例如在兩個德文定序之一中 Ö
= OE
的規則)。
MySQL 可以為您執行這些操作
使用各種字元集儲存字串。
使用各種定序比較字串。
在同一伺服器、同一資料庫甚至同一表格中混合使用具有不同字元集或定序的字串。
在任何層級啟用字元集和定序的規格。
為了有效使用這些功能,您必須了解可用的字元集和定序、如何變更預設值以及它們如何影響字串運算子和函式的行為。