我正在阅读MySQL文档。在那里我发现
什么是“二进制字符串”?它是一个通用术语还是仅在MySQL中使用的术语?
我认为如果它是“二进制”数据,那么它不应该被称为“字符串”(字符数组)。所以我想知道什么是“二进制字符串”?它是否意味着“字节序列”?
我假设最终每种数据类型都将转换为二进制数据。MySQL中的“字符串类型”也是如此。区别“字符串”和“二进制字符串”的是,“字符字符串”在MySQL将其从二进制转换为字符字符串时具有关于要使用的编码方案和排序规则的一些信息。
所以我不太明白的是为什么UNHEX('4D7953514C')返回一个“字符字符串”
UNHEX
函数被描述为:
对于一个字符串参数str,UNHEX(str)将参数中的每一对字符解释为一个十六进制数,并将其转换为表示该数字的字节。返回值是一个二进制字符串。
mysql> SELECT UNHEX('4D7953514C');
-> 'MySQL'
mysql> SELECT X'4D7953514C';
-> 'MySQL'
mysql> SELECT UNHEX(HEX('string'));
-> 'string'
mysql> SELECT HEX(UNHEX('1267'));
-> '1267'
什么是“二进制字符串”?它是一个通用术语还是仅在MySQL中使用的术语?
我认为如果它是“二进制”数据,那么它不应该被称为“字符串”(字符数组)。所以我想知道什么是“二进制字符串”?它是否意味着“字节序列”?
我假设最终每种数据类型都将转换为二进制数据。MySQL中的“字符串类型”也是如此。区别“字符串”和“二进制字符串”的是,“字符字符串”在MySQL将其从二进制转换为字符字符串时具有关于要使用的编码方案和排序规则的一些信息。
所以我不太明白的是为什么UNHEX('4D7953514C')返回一个“字符字符串”
'MySQL'
而不是由0和1的序列表示的“二进制字符串”(0100 1101 0111 1001 0101 0011 0101 0001 0100 1100)。