瀚高資料庫相容Mysql的unhex函式

瀚高PG實驗室發表於2021-11-11
環境
系統平臺: 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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章