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。

SELECT UNHEX('4142');

返回结果如下:

 unhex
--------
 \x4142
(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)

清理环境

DROP TABLE test_1169944;