当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。