我想在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的数字。奇怪的是,当我尝试订购重量柱时,订购是正确的!
答案 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进行查询。