質問
そのようなクエリが必要です
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
解決
MySQLについて条項がわからない場合は、ケースを使用できます。
しかし、より良いアプローチはそれらを翻訳することです、
あなたはそれについて読むことができます sql Where clauses:ケースを避け、ブールロジックを使用します
それで
select * from t where (:param is null and filed is null) or (filed = :param)
他のヒント
この代替手段を試すことができます。これはあなたに役立つかもしれません
select * from t where (field = NULL AND param= NULL) OR field ='4'
nullを使用する場合、算術演算子を使用することはできません。試す 合体 値を整理またはnullで論理的にするには
mysql> SELECT COALESCE(NULL,1);
-> 1
mysql> SELECT COALESCE(NULL,NULL,NULL);
-> NULL
私はあなたが探していると思います nullif ifnullの代わりに
より良いアプローチは、あなたの場合の条項でケースを使用することだと思います。
所属していません StackOverflow