2017-07-16 70 views
1

我意外地生成了一些列作爲十六進制字符串時我的表,當他們應該是小數。哎呦。但無論如何,作爲查詢的一部分,我減去他們:在mysql中減去十六進制字符串

hexsub

我找不到文件,所以我來這裏問:究竟什麼是減法的兩(十六進制)字符串之間的含義是什麼?它似乎並沒有將它們轉換爲base16整數並減去,它不是不同字符的數量。減去2個不同的字符串會產生0的差異。那麼它是什麼意思?

+0

它是MySQL或MariaDB的? – RiggsFolly

+0

**不小心**,然後填滿了一堆行。因此,刪除那些duff列,並從技術上重新開始 – RiggsFolly

+0

@RiggsFolly MariaDB。我不在尋找如何修復這些列,我可以弄清楚。我只想知道減法的含義。 –

回答

3

將字符串從左到右依次解釋爲數字,直到解釋停止。這些數字被減去。如果連第一個字符都是一個字母,結果就是0。

2f - 1f is 1 
f - 4xxx is -4 
761xxx - facb is 761 

一些進一步的試驗:

select '1aaa' - '-1.1bbbb' is 2.1 
select '.1aaa' - '-1.1bbbb' is 1.2000000000000002 

官方文檔:mysql/type-conversion