當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


MySQL Binary and Non-binary strings用法及代碼示例

二進製字符串

二進製字符串是字節序列。它們具有二進製字符集和排序規則,並且比較/排序是基於字節的數值完成的。

--Setting the character set to binary
SET NAMES 'binary';
--Checking the character set and collation
SELECT CHARSET('apple'), COLLATION('apple');



+------------------------------------+----------------------------------------+
| CHARSET('apple')                   | COLLATION('apple')                     |
+------------------------------------+----------------------------------------+
| 0x62696E617279                     | 0x62696E617279                         |
+------------------------------------+----------------------------------------+

當您看到 0x62696E617279 時,乍一看這可能看起來像是胡言亂語。這是以十六進製表示的二進製字符串(前綴0x表示該數字以十六進製寫入):

十六進製

十進製值

ASCII 字符

62

98

b

69

105

i

6E

110

n

61

97

a

72

114

r

79

121

y

因此,如果我們用簡單的英語讀取二進製字符串0x62696E617279,它將讀取'binary'

注意

在這種情況下,ASCII 字符都可以使用 1 個字節表示,因此每個字母對應一對十六進製數字(例如 'n' 對應十六進製 '6E' )。但是,多字節字符的情況並非如此(例如日語字符 以十六進製表示為 'E38182' )。

顯然,我們可以看到,當我們想要讀取以文本形式存儲的信息時,二進製字符串並不是很有用。二進製字符串通常用於保存非文本數據,例如圖片和錄音。

非二進製字符串

非二進製字符串是字符序列。它與字符集和排序規則相關聯。

MySQL 中的默認字符集是 utfmb4,默認排序規則是 utf8mb4_0900_ai_ci

SELECT CHARSET('apple'), COLLATION('apple');



+------------------+--------------------+
| CHARSET('apple') | COLLATION('apple') |
+------------------+--------------------+
| utf8mb4          | utf8mb4_0900_ai_ci |
+------------------+--------------------+

我們可以看到,非二進製字符串比二進製字符串更適合文本信息。

相關用法


注:本文由純淨天空篩選整理自Arthur Yanagisawa大神的英文原創作品 MySQL | Binary and Non-binary strings。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。