文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國信紙尺寸) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  校對效果範例

12.8.6 校對效果範例

範例 1:排序德語變音符號

假設資料表 T 中的欄位 X 具有下列 latin1 欄位值

Muffler
Müller
MX Systems
MySQL

也假設使用下列陳述式擷取欄位值

SELECT X FROM T ORDER BY X COLLATE collation_name;

下表顯示如果我們使用不同校對的 ORDER BY 時,值的排序結果。

latin1_swedish_ci latin1_german1_ci latin1_german2_ci
Muffler Muffler Müller
MX Systems Müller Muffler
Müller MX Systems MX Systems
MySQL MySQL MySQL

在此範例中導致不同排序順序的字元是 ü (德語 U-變音符號)。

  • 第一欄顯示使用瑞典/芬蘭校對規則的 SELECT 結果,該規則指出 U-變音符號與 Y 一起排序。

  • 第二欄顯示使用德國 DIN-1 規則的 SELECT 結果,該規則指出 U-變音符號與 U 一起排序。

  • 第三欄顯示使用德國 DIN-2 規則的 SELECT 結果,該規則指出 U-變音符號與 UE 一起排序。

範例 2:搜尋德語變音符號

假設您有三個僅因使用的字元集和校對而異的資料表

mysql> SET NAMES utf8mb4;
mysql> CREATE TABLE german1 (
         c CHAR(10)
       ) CHARACTER SET latin1 COLLATE latin1_german1_ci;
mysql> CREATE TABLE german2 (
         c CHAR(10)
       ) CHARACTER SET latin1 COLLATE latin1_german2_ci;
mysql> CREATE TABLE germanutf8 (
         c CHAR(10)
       ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

每個資料表包含兩筆記錄

mysql> INSERT INTO german1 VALUES ('Bar'), ('Bär');
mysql> INSERT INTO german2 VALUES ('Bar'), ('Bär');
mysql> INSERT INTO germanutf8 VALUES ('Bar'), ('Bär');

上述校對中有兩個具有 A = Ä 相等性,一個沒有此類相等性 (latin1_german2_ci)。因此,比較會產生此處顯示的結果

mysql> SELECT * FROM german1 WHERE c = 'Bär';
+------+
| c    |
+------+
| Bar  |
| Bär  |
+------+
mysql> SELECT * FROM german2 WHERE c = 'Bär';
+------+
| c    |
+------+
| Bär  |
+------+
mysql> SELECT * FROM germanutf8 WHERE c = 'Bär';
+------+
| c    |
+------+
| Bar  |
| Bär  |
+------+

這不是錯誤,而是 latin1_german1_ciutf8mb4_unicode_ci 排序屬性的結果 (顯示的排序是根據德國 DIN 5007 標準完成)。