VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

UNHEX

功能描述

UNHEX函数用于将一个十六进制编码的字符串解码。

UNHEX解码规则

一个十六进制字符变成4位二进制,两个十六进制字符(8位)解码为一个字符,返回字符串的解码结果(bytea类型)。若十六进制字符串的字符数不为偶数,则在高位补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(bytea | boolean | text | bit)

参数说明

bytea | boolean | text | bit

输入的待转换数据,支持的数据类型为:bytea、boolean、text、bit。

示例

示例1: 直接调用UNHEX函数。

1、使用HEX函数将字符串转换为十六进制表现形式。

select HEX('1234abc&');

返回结果如下:

       hex
------------------
 3132333461626326
(1 row)

2、使用上一步转换得到的结果作为UNHEX函数的入参,得到转换前的原始数据。

select UNHEX('3132333461626326');

返回结果如下:

 UNHEX('3132333461626326')
---------------------------
 \x3132333461626326
(1 row)

上述语句等效于:

select UNHEX(HEX('1234abc&'));

示例2: 调用unhex函数(其入参为表值)。

1、创建测试表并插入数据。

create table test_1169944 (c1 bytea);
insert into test_1169944 values('qwert');
insert into test_1169944 values('7177657274');

2、使用HEX函数将c1转换为十六进制表现形式。

select HEX(c1) from test_1169944 where c1='qwert';

返回结果为:

  HEX(c1)
------------
 7177657274
(1 row)

3、调用UNHEX函数。

select UNHEX(c1) from test_1169944 where c1='7177657274';
select UNHEX(HEX(c1)) from test_1169944 where c1='qwert';

返回结果为:

 UNHEX(c1)
-----------

(1 row)

 UNHEX(HEX(c1))
----------------
 \x7177657274
(1 row)