ITPub博客

首页 > 数据库 > 国内数据库 > 瀚高数据库兼容Mysql的unhex函数

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

原创 国内数据库 作者:瀚高PG实验室 时间:2021-11-11 15:31:43 0 删除 编辑
环境
系统平台: Microsoft Windows (64-bit) 10
版本: 5.6.5
详细信息

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特有的,主流数据库都不支持。以下链接帮助深入理解这个问题:


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69994931/viewspace-2841751/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
瀚高PG实验室(Highgo PG Lab)依托于瀚高DBA运维团队及瀚高数据库PG内核研发团队,旨在深入研究PostgreSQL技术、使用技巧、内核探秘、PG教学等,并进行分享。欢迎大家关注、交流。

注册时间:2021-02-18

  • 博文量
    75
  • 访问量
    27305