mysql ifnull在哪里

时间:2010-12-31 08:57:15

标签: sql mysql ifnull

我需要这样的查询

select * from t where
field=ifnull(:param, field) 'it not work's

所以如果param = NULL我有

select * from t where field is NULL

但如果param = 4 我有

select * from t where field=4

4 个答案:

答案 0 :(得分:3)

您可以在where子句中使用案例AFAIK bot不确定MySQl,

但更好的方法是翻译它们,

你可以阅读SQL WHERE clauses: Avoid CASE, use Boolean logic

所以

select * from t where (:param is null and filed is null) or (filed = :param)

答案 1 :(得分:1)

您可以尝试这种替代方案 这可能对你有帮助

 select * from t where (field = NULL AND param= NULL) OR field ='4'

答案 2 :(得分:0)

我认为您正在寻找NULLIF而不是ifnull

我认为更好的方法是在你的情况下在where子句中使用CASE。

答案 3 :(得分:0)

使用NULL时,不能使用算术运算符。尝试使用COALESCE来生成逻辑if,其值为integer或NULL

mysql> SELECT COALESCE(NULL,1);
    -> 1
mysql> SELECT COALESCE(NULL,NULL,NULL);
    -> NULL