二进制字符集
该binary
字符集是字符二进制串,其是字节序列设置。该binary
字符集有一个校验,也叫binary
。比较和校验基于数字字节值,而不是基于数字字符代码值(对于多字节字符,数字字符代码值不同于数字字节值)。有关之间的差异信息binary
的核对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(@strUSING utf8mb4)); +------------- +------------------------------------ + | LOWER(@str) | LOWER(CONVERT(@str USING utf8mb4)) | +------------- +------------------------------------ + | New York | new york | +------------- +------------------------------------ +
要将字符串表达式转换为二进制字符串,这些结构是等效的:
BINARY expr CAST(exprAS BINARY) CONVERT(exprUSING BINARY)
如果值是字符串文字,则_binary
可以使用引入程序将其指定为二进制字符串。例如:
_binary 'a'
所述_binary
导引器是允许用于十六进制文字和比特值文字为好,但不必要的;这样的文字默认情况下是二进制字符串。
有关介绍人的更多信息,请参见“字符串字符集和校验规则”。