瀚高数据库兼容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函数的主要内容,如果未能解决你的问题,请参考以下文章