UNHEX
功能描述
UNHEX函数用于将一个十六进制编码的字符串解码。
UNHEX解码规则
一个十六进制字符变成4位二进制,两个十六进制字符(8位)解码为一个字符,返回字符串的解码结果(text类型)。若十六进制字符串的字符数不为偶数,则在高位补0。若输入的是二进制格式的字符串,则返回NULL。
例如:4142
1、将每个十六进制字符用4位二进制表示,若十六进制字符数不为偶数,则在高位补0:0100(4)0001(1)0100(4)0010(2)。
2、每8位组成一个字符:01000001 01000010。
3、故解码结果为AB。
select UNHEX('4142');
返回结果如下:
unhex
-------
AB
(1 row)
HEX函数用于得到输入数据的十六进制表现形式,UNHEX函数可将HEX函数的转换结果还原为其原始数据。
注意事项
- 该功能仅在数据库兼容模式为MySQL时支持(即数据库初始化时指定DBCOMPATIBILITY='B')。
- 如果输入的是NULL或者包含非十六进制字符,那么返回的结果为NULL。
- 若输入的是数字,则将数字转成字符串后进行解码,如需将十六进制数转为十进制数,则需要使用其它的函数。
语法格式
UNHEX( text )
参数说明
text
输入的待转换数据,当前仅支持变长字符串类型text。
示例
1、使用HEX函数将字符串转换为十六进制表现形式。
select HEX('1234abc&');
返回结果如下:
hex
------------------
3132333461626326
(1 row)
2、使用上一步转换得到的结果作为UNHEX函数的入参,得到转换前的原始数据。
select UNHEX('3132333461626326');
返回结果如下:
unhex
----------
1234abc&
(1 row)
上述语句等效于:
select UNHEX(HEX('1234abc&'));