MYSQL中HEX、UNHEX函数

1、 首先在Xshell下查看本次实验mysql版本


2、 然后连接到Mysql服务器上

 

3、 首先我们对UNHEX函数进行测试

HEX()函数:返回十六进制值的字符串表示形式。注意:并不是十进制转化为十六进制数,而是转化为字符串。。。

UNHEX() 函数: 每对十六进制数字转化为一个字符。

下面是HEX()几个简单的例子:



重点是UNHEX函数:

刚开始我以为该函数功能是将16进制数转化为十进制数(下面是我出错的例子):

错误:十六进制1f代表十进制31
mysql> select unhex('1f');
+-------------+
| unhex('1f') |
+-------------+
| |
+-------------+
1 row in set (0.00 sec)

错误:十六进制1a2b3c代表十进制1715004
mysql> select unhex('1a2b3c');
+-----------------+
| unhex('1a2b3c') |
+-----------------+
| +< |
+-----------------+
1 row in set (0.00 sec)

和我所认为的正确答案不一样。。。为什么出错了?

回再来看下该函数功能:UNHEX() 函数: 每对十六进制数字转化为一个字符。


该图是ASCII码对应的十六进制数和字符

红色圈起来的部分是我们UNHEX函数的操作数也就是输入。在这里还有一点要说明:HEX()函数:返回十六进制值的字符串表示形式。所以UNHEX函数的操作数需带上单引号。。。

蓝色代表的部分是我出错的原因,是我预期的输出值。

绿色代表的是正确的输出值。

接下来再看几个例子:


转化A时并没有出现数字10,而是数字10的ASCII字符(LF),该字符无法正确输出。。。

再来看下刚才出错的例子:



同样的并没有出现数字31,而是数字31的ASCII字符(US),该字符无法正确输出。。。

微笑


十六进制21代表的十进制数是33,,33代表的ASCII码是!,所以正确了。。。吐舌头

同理:


最后一个:


希望能帮助到其他人。刚开始写博客,请大家多多包涵。微笑

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值