在mysql中减去十六进制字符串

时间:2017-07-16 17:24:57

标签: xampp mariadb

我意外地生成了我的表,其中一些列为十六进制字符串,当它们应为小数时。哎呦。但无论如何,作为查询的一部分,我减去它们:

hexsub

我找不到文档,所以我来这里问:两个(十六进制)字符串之间的减法究竟是什么意思?它似乎没有将它们转换为base16整数并减去,它不是不同字符的数量。减去2个不同的字符串会产生0.的差异。那是什么意思?

1 个答案:

答案 0 :(得分: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