MySQL 8.4 版本資訊
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 命令列用戶端」。