【问题标题】:Subtraction of hex strings in mysqlmysql中十六进制字符串的减法
【发布时间】:2017-12-21 05:39:12
【问题描述】:

我不小心生成了一些列作为十六进制字符串的表格,而它们应该是小数。哎呀。但无论如何,作为查询的一部分,我将它们减去:

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

【问题讨论】:

  • 是 MYSQL 还是 MariaDB?
  • 不小心 然后填了一堆行。所以删除那些 duff 列并重新开始
  • @RiggsFolly MariaDB,从技术上讲。我不是在寻找如何修复列,我可以弄清楚。我只是想知道减法是什么意思。
  • 为什么“金额”存储为十六进制???

标签: xampp mariadb


【解决方案1】:

字符串从左到右逐个字母地解释为数字,直到解释必须停止。这些数字被减去。如果连第一个字符都是字母,则结果为 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

【讨论】:

    猜你喜欢
    • 2019-07-27
    • 1970-01-01
    • 2010-10-04
    • 2014-03-07
    • 1970-01-01
    • 2011-10-22
    • 2013-04-28
    • 1970-01-01
    • 2018-01-31
    相关资源
    最近更新 更多