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

时间:2017-01-28 18:42:07

标签: php mysql compare

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

new_task

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

#CoffeeScript
ready = ->
  $("#submit_link").click (event) ->
    $("#new_task").submit()
$(document).ready ready
$(document).on "page:load", ready

由于MySQL似乎不理解逗号作为小数分隔符,我尝试用点替换它:

0,15 kg
0,52 kg
0,68 kg
1,24 kg

然而,我总是得到奇怪的结果,包括大于0.7的数字。奇怪的是,当我尝试订购重量柱时,订购是正确的!

1 个答案:

答案 0 :(得分:1)

使用构造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进行查询。