如何在 MySQL 中将两个数字作为字符串进行比较



我想在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 的数字。奇怪的是,当我尝试订购重量列时,排序是正确的!

use construct(val as decimal(10,2))

SELECT * FROM `foobar `
WHERE CAST(REPLACE(weight,',','.') AS DECIMAL(10,2)) <= CAST(REPLACE('0,7 kg',',','.') AS DECIMAL(10,2));

查询已经过测试并给出了正确的结果。

此解决方案不能使用索引。更好的方法是针对填充了计算数据的临时表进行查询。或者,您可以将索引十进制列weight_dec添加到此表,并使用触发器根据权重填充数据。然后使用 weight_dec 进行查询。

相关内容

  • 没有找到相关文章