MySQL中的IFNULL在where子句中

时间:2016-11-03 20:16:41

标签: mysql

我有这个行的MySQL表:

+----------+--------+------+-------+
| list_uid | sku    | qty  | verif |
+----------+--------+------+-------+
|       49 | 024522 | 10   | 8     |
+----------+--------+------+-------+

我尝试使用此查询选择此行:

SELECT
  *
FROM
  ae_rf_list_picked
WHERE
  `qty` != 0 AND
  IFNULL(`verif`, 0) < `qty` AND 
  `sku` = '024522' AND 
  `list_uid` = 49

我不明白为什么此行不会被此查询返回。 如果我删除此部分

  

IFNULL(verif,0)&lt; qty

查询返回该行。

1 个答案:

答案 0 :(得分:2)

也许您需要将verif和qty转换为数值

假设没有小数和&lt; 10个字符......

SELECT *
FROM ae_rf_list_picked
WHERE `qty` != 0 
  AND cast(IFNULL(`verif`, 0) as Numeric(10)) < cast(`qty` as numeric(10))  
  AND `sku` = '024522' 
  AND `list_uid` = 49