MYSQL中HEX、UNHEX函式
1、 首先在Xshell下檢視本次實驗mysql版本
2、 然後連線到Mysql伺服器上
3、 首先我們對UNHEX函式進行測試
HEX()函式:返回十六進位制值的字串表示形式。注意:並不是十進位制轉化為十六進位制數,而是轉化為字串。。。
UNHEX() 函式: 每對十六進位制數字轉化為一個字元。
下面是HEX()幾個簡單的例子:重點是UNHEX函式:
剛開始我以為該函式功能是將16進位制數轉化為十進位制數(下面是我出錯的例子):
錯誤:十六進位制1f代表十進位制31
mysql> select unhex('1f');
+-------------+
| unhex('1f') |
+-------------+
| |
+-------------+
1 row in set (0.00 sec)
錯誤:十六進位制1a2b3c代表十進位制1715004
mysql> select unhex('1a2b3c');
+-----------------+
| unhex('1a2b3c') |
+-----------------+
| +< |
+-----------------+
1 row in set (0.00 sec)
。
。
。
回再來看下該函式功能:UNHEX() 函式: 每對十六進位制數字轉化為一個字元。
該圖是ASCII碼對應的十六進位制數和字元
紅色圈起來的部分是我們UNHEX函式的運算元也就是輸入。在這裡還有一點要說明:HEX()函式:返回十六進位制值的字串表示形式。所以UNHEX函式的運算元需帶上單引號。。。
藍色代表的部分是我出錯的原因,是我預期的輸出值。
綠色代表的是正確的輸出值。
接下來再看幾個例子:
轉化A時並沒有出現數字10,而是數字10的ASCII字元(LF),該字元無法正確輸出。。。
再來看下剛才出錯的例子:
同樣的並沒有出現數字31,而是數字31的ASCII字元(US),該字元無法正確輸出。。。
十六進位制21代表的十進位制數是33,,33代表的ASCII碼是!,所以正確了。。。
同理:
最後一個:
希望能幫助到其他人。剛開始寫部落格,請大家多多包涵。