gpt4 book ai didi

php - 如何在 MySQL 中比较两个数字作为字符串?

转载 作者:行者123 更新时间:2023-11-29 11:02:56 25 4
gpt4 key购买 nike

我想在 MySQL 中将两个字符串作为数字进行比较。我的表中有以下数据:

0,15 公斤
0.52公斤
0.68公斤
1.24公斤

现在我想将字符串与该数据进行比较。我尝试的是这样的:

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

最佳答案

使用构造 CAST(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));

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

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

关于php - 如何在 MySQL 中比较两个数字作为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41913435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com