2013-09-21 45 views
0

爲什麼SQLite十六進制()函數對十六進制(1)返回31。sqlite hex(1)返回31?

比如我做的:

select hex(1) from mytable; 

我也得到31,但它不應該返回1?

謝謝, 卡洛斯。

+1

ASCII'1'的代碼是49. Dec 49是十六進制31.這就是你所得到的。 –

回答

1

因爲:

十六進制()函數解釋其作爲BLOB參數,並返回字符串 是 該斑點的內容的大寫十六進制渲染。

hex()函數將BLOB值轉換爲十六進制文本表示形式。參數數據被假定爲BLOB。 如果它不是BLOB,它將被轉換爲一個。返回的文本值將包含BLOB中每個字節的兩個十六進制字符。

+0

好的...有可能得到十六進制(1)= 1? – QLands

+0

@QLands十六進制()函數將BLOB值轉換爲十六進制文本表示...因此它似乎不可能... – aleroot

+1

額外的內部背景:sqlite將所有內容存儲爲文本。 – thammi