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


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 命令列用戶端」