文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

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 標準執行)。