文件首頁
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


12.10.8 二進位字元集

binary 字元集是二進位字串的字元集,也就是位元組序列。binary 字元集有一個校對,也命名為 binary。比較和排序是根據數值位元組值,而不是根據數值字元碼值(多位元組字元的數值字元碼值與數值位元組值不同)。如需了解 binary 字元集的 binary 校對與非二進位字元集的 _bin 校對之間差異的相關資訊,請參閱第 12.8.5 節「binary 校對與 _bin 校對的比較」

對於 binary 字元集,大小寫和重音等效的概念不適用

  • 對於以二進位字串儲存的單位元組字元,字元和位元組邊界相同,因此在比較中,大小寫和重音差異很重要。也就是說,binary 校對區分大小寫且區分重音。

    mysql> SET NAMES 'binary';
    mysql> SELECT CHARSET('abc'), COLLATION('abc');
    +----------------+------------------+
    | CHARSET('abc') | COLLATION('abc') |
    +----------------+------------------+
    | binary         | binary           |
    +----------------+------------------+
    mysql> SELECT 'abc' = 'ABC', 'a' = 'ä';
    +---------------+------------+
    | 'abc' = 'ABC' | 'a' = 'ä'  |
    +---------------+------------+
    |             0 |          0 |
    +---------------+------------+
  • 對於以二進位字串儲存的多位元組字元,字元和位元組邊界不同。字元邊界會遺失,因此依賴它們的比較沒有意義。

若要執行二進位字串的大小寫轉換,請先使用適用於字串中儲存資料的字元集將其轉換為非二進位字串

mysql> SET @str = BINARY 'New York';
mysql> SELECT LOWER(@str), LOWER(CONVERT(@str USING utf8mb4));
+-------------+------------------------------------+
| LOWER(@str) | LOWER(CONVERT(@str USING utf8mb4)) |
+-------------+------------------------------------+
| New York    | new york                           |
+-------------+------------------------------------+

若要將字串運算式轉換為二進位字串,以下建構式是相等的

BINARY expr
CAST(expr AS BINARY)
CONVERT(expr USING BINARY)

如果值是字串常值,則可以使用 _binary 引導符將其指定為二進位字串。例如

_binary 'a'

十六進位常值和位元值常值也允許使用 _binary 引導符,但沒有必要;這些常值預設為二進位字串。

如需引導符的相關資訊,請參閱第 12.3.8 節「字元集引導符」

注意

mysql 用戶端中,二進位字串會使用十六進位標記法顯示,這取決於 --binary-as-hex 的值。如需該選項的相關資訊,請參閱第 6.5.1 節「mysql — MySQL 命令列用戶端」