【问题标题】:mysql ifnull wheremysql ifnull 在哪里
【发布时间】:2011-06-01 22:20:48
【问题描述】:

我需要这样的查询

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

所以如果 param=NULL 我有

select * from t where field is NULL

但是如果参数 =4 我有

select * from t where field=4

【问题讨论】:

    标签: sql mysql ifnull


    【解决方案1】:

    您可以在 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)
    

    【讨论】:

      【解决方案2】:

      你可以试试这个替代方案 这可能会帮助你

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

      【讨论】:

        【解决方案3】:

        使用 NULL 时,您不能使用算术运算符。尝试COALESCE 使值是整数或 NULL 的逻辑逻辑

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 2011-06-12
            • 2013-03-31
            • 2011-03-14
            • 2012-04-01
            • 2013-07-30
            • 2011-01-09
            • 1970-01-01
            • 2020-10-06
            • 2015-05-14
            相关资源
            最近更新 更多