瀚高数据库兼容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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值