系統平臺:
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/,如需轉載,請註明出處,否則將追究法律責任。