瀚高数据库兼容Mysql的unhex函数

Posted 瀚高PG实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了瀚高数据库兼容Mysql的unhex函数相关的知识,希望对你有一定的参考价值。

目录
环境
文档用途
详细信息

环境
系统平台:Microsoft Windows (64-bit) 10
版本:5.6.5
文档用途
本文介绍瀚高数据库实现mysql中的unhex函数,及在执行select x’'类似语句时,产生不同结果的原因

详细信息
1、mysql中hex()与unhex()

mysql> SELECT HEX('瀚高');

+---------------+

| HEX('瀚高')   |

+---------------+

| E7809AE9AB98  |

+---------------+

1 row in set (0.00 sec)



mysql> SELECT UNHEX('E7809AE9AB98');

+-----------------------+

| UNHEX('E7809AE9AB98') |

+-----------------------+

| 瀚高                  |

+-----------------------+

1 row in set (0.00 sec)

注:mysql当前character_set_database和cmd编码均为utf8

2、瀚高数据库实现unhex()

highgo=# SELECT convert_from(decode('E7809AE9AB98', 'hex'),'SQL_ASCII');

 convert_from

--------------

 瀚高

(1 行记录

如果需要兼容unhex函数,只需要把convert_from(decode(‘E7809AE9AB98’, ‘hex’),‘SQL_ASCII’)封装成函数即可。

3、select x’E7809AE9AB98’在mysql和瀚高中的不同结果

mysql:

mysql> select x'E7809AE9AB98';

+-----------------+

| x'E7809AE9AB98' |

+-----------------+

| 瀚高            |

+-----------------+

1 row in set (0.00 sec)



瀚高:

highgo=# select x'E7809AE9AB98';

              ?column?

--------------------------------------------------

 111001111000000010011010111010011010101110011000

(1 行记录)

产生以上不同的原因是瀚高数据库和mysql对x’'参数底层处理机制不同,同时与数据库编码,客户端编码都有关系。

解决:在遇到类似情况时建议修改应用程序代码解决。目前已知这个语法是mysql特有的,主流数据库都不支持。以下链接帮助深入理解这个问题:http://www.gpfeng.com/?p=278

以上是关于瀚高数据库兼容Mysql的unhex函数的主要内容,如果未能解决你的问题,请参考以下文章

MySQL内置函数:year() week()兼容

MySQL内置函数:year() week()兼容

mysql中用HEX和UNHEX函数处理二进制数据的导入导出

瀚高DB兼容MySQL if函数

瀚高DB兼容MySQL if函数

HGDB兼容MySQL date_format函数