为什么MySQL SELECT UNHEX(1)= :)(微笑)

时间:2016-03-22 19:31:30

标签: mysql sql

为什么SELECT UNHEX(1)会回复笑容?

我期待1

这里可能会发生什么?

2 个答案:

答案 0 :(得分:2)

UNHEX尝试将十六进制数转换为字符串。由于您使用的是ASCII编码,UNHEX(1)会返回笑脸。 C.F. enter image description here

答案 1 :(得分:0)

文件明确指出:

  

对于数字参数N,UNHEX()不执行HEX(N)的反转。使用CONV(HEX(N),16,10)代替。请参阅HEX()的说明。

它的作用如下,仍然是根据文件:

  

对于字符串参数str,UNHEX(str)解释每对   参数中的字符作为十六进制数并将其转换为   由数字表示的字节。返回值是二进制   字符串。

所以在我们的例子中,它将返回1(十六进制)的二进制表示,它只是00000001。以下取决于您的安装。在我的作品中,我认为默认的字符集是ascii或utf8,所以根据this table,这是“标题的开始”控制字符。由于它是一个控制字符,你的命令行或浏览器可能会有一些显示它的问题,这可以解释微笑。

如果我尝试SELECT UNHEX(21),我会根据this table

获得正确的!

经过一些测试,如果你给函数赋予数值,il将为一个字符串,并将两位数字分成两位数,并将它们转换为二进制字符串。