“二进制字符串”在mysql中是什么意思

5gfr0r5j  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(453)

我在读mysql的文档。在那里我找到了 UNHEX 功能描述如下:
对于字符串参数str,unhex(str)将参数中的每对字符解释为十六进制数,并将其转换为该数字表示的字节。返回值是二进制字符串。

  1. mysql> SELECT UNHEX('4D7953514C');
  2. -> 'MySQL'
  3. mysql> SELECT X'4D7953514C';
  4. -> 'MySQL'
  5. mysql> SELECT UNHEX(HEX('string'));
  6. -> 'string'
  7. mysql> SELECT HEX(UNHEX('1267'));
  8. -> '1267'

什么是“二进制字符串”?它是一般术语还是mysql中专门使用的术语?
我认为如果它是一个“二进制”数据,那么它就不应该被称为“字符串”(字符数组)。所以我想知道什么是“二进制字符串”??是指“字节数组”吗?
我假设最终每个数据类型都将转换为二进制数据。mysql中的“字符串类型”也是如此。区别于“字符串”和“二进制字符串”的地方在于,当mysql将“字符串”从二进制转换为字符串时,“字符串”包含一些有关要使用的编码模式和排序规则的信息。
所以我不太明白为什么unhex('4d7953514c')返回一个“字符串” 'MySQL' 但不是由0和1序列表示的“二进制字符串”(0100 1101 0111 1001 0101 0011 0101 0001 0100 1100)。

k5ifujac

k5ifujac1#

术语“二进制字符串”通常指0和1的序列。在mysql函数unhex的情况下,它接受一个十六进制值的字符串,并将其转换为一个二进制数,该二进制数将表示为一个字符串。没什么特别的。结果将是一个字符串,它是从十六进制数转换为二进制数的结果。十六进制数在转换成二进制时是四位数。0和1的结果序列将是结果字符串的二进制表示。

swvgeqrz

swvgeqrz2#

正如mysql手册中关于binary和varbinary数据类型所说,二进制字符串
包含字节字符串而不是字符串。这意味着它们具有二进制字符集和排序规则,比较和排序基于值中字节的数值。
本质上,它们是字节数组。

相关问题