【发布时间】:2017-01-28 18:42:06
【问题描述】:
我想在 MySQL 中将两个字符串作为数字进行比较。我的表中有以下数据:
0,15 kg
0,52 kg
0,68 kg
1,24 kg
现在我想将一个字符串与该数据进行比较。我尝试的是这样的:
SELECT * FROM `foobar` WHERE weight+0.0 <= '0,7 kg'
由于 MySQL 似乎不将逗号理解为小数分隔符,因此我尝试将其替换为点:
SELECT * FROM `foobar` WHERE REPLACE(weight+0.0,',','.') <= REPLACE('0,7 kg',',','.')
但是,我总是得到奇怪的结果,包括大于 0.7 的数字。奇怪的是,当我尝试订购重量列时,订购是正确的!
【问题讨论】:
-
正确存储数据
-
当然,你应该把它分开,就像草莓提到的那样。但是mysql能够对其进行排序。例如
where foo > '0,52'有效。 -
是的,我知道它应该以不同的方式存储。如果数字后面有“kg”,则排序无法正常工作。
-
@phpheini 也这么认为。但它确实有效:i.imgur.com/ZNkcdM6.png
-
使用无符号十进制
5,2列类型来存储该数据,您可以根据需要轻松地将kg添加到它的显示上