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

为什么MySQL选择UNHEX(1)=:(微笑),mysql,sql,Mysql,Sql,为什么选择UNHEX(1)返回微笑 我期待着1 这里可能发生了什么?文档明确指出: 对于数值参数N,十六进制(N)的倒数不是由UNHEX()执行的。改用CONV(十六进制(N),16,10)。请参阅HEX()的说明 根据文档,它所做的工作如下: 对于字符串参数str,UNHEX(str)解释每对 将参数中的字符转换为十六进制数,并将其转换为 由数字表示的字节。返回值是二进制的 绳子 因此,在我们的例子中,它将返回1的二进制表示形式(十六进制),即00000001。以下内容取决于您的安装。在我的例

为什么
选择UNHEX(1)
返回微笑

我期待着
1


这里可能发生了什么?

文档明确指出:

对于数值参数N,十六进制(N)的倒数不是由UNHEX()执行的。改用CONV(十六进制(N),16,10)。请参阅HEX()的说明

根据文档,它所做的工作如下:

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

因此,在我们的例子中,它将返回1的二进制表示形式(十六进制),即
00000001
。以下内容取决于您的安装。在我的例子中,我认为默认字符集是ascii或utf8,所以根据。由于它是一个控制字符,您的命令行或浏览器可能会在显示它时遇到一些问题,这可能解释了微笑的原因

如果我尝试
选择UNHEX(21)
,我会得到
根据


在一些测试之后,如果您为函数提供数值,il将作为字符串,将两位数除以两位数,并将其转换为二进制字符串。

UNHEX
尝试将十六进制数转换为字符串。由于您使用的是ASCII编码,
UNHEX(1)
返回一个笑脸。c、 f.

从way back机器,这现在被称为,或与古老的ANSI标准相关。这是20世纪80年代人们不得不使用的表情符号,而不是表情符号。ASCII通常为7位,最多只能为0x7F。因此,更改编码应使其返回
1
?我该怎么做?或者,在这种情况下是否可以使用
unhex
的替代方案?