我正在阅读 the doc of MySQL .我发现 UNHEX
函数的位置描述为:
For a string argument str, UNHEX(str) interprets each pair of characters in the argument as a hexadecimal number and converts it to the byte represented by the number. The return value is a binary string.
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 和1s(0100 1101 0111 1001 0101 0011 0101 0001 0100 1100).
最佳答案
术语“二进制字符串”通常表示 0 和 1 的序列。在 MySQL 函数 unhex 的情况下,它采用十六进制值的字符串并将其转换为二进制数,二进制数将表示为字符串。这里没什么好看的。结果将是一个字符串,它是十六进制数转换为二进制数的结果。十六进制数转换成二进制数是四位数。 0 和 1 的结果序列将是结果字符串的二进制表示。
关于mysql - "binary string"在MySQL中是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52018606/