i solche Abfrage benötigenmysql IFNULL wo
select * from t where
field=ifnull(:param, field) 'it not work's
also, wenn param = NULL ich habe
select * from t where field is NULL
aber wenn param = 4 ich habe
select * from t where field=4
i solche Abfrage benötigenmysql IFNULL wo
select * from t where
field=ifnull(:param, field) 'it not work's
also, wenn param = NULL ich habe
select * from t where field is NULL
aber wenn param = 4 ich habe
select * from t where field=4
Sie können den Fall verwenden, wenn in where-Klausel AFAIK bot nicht sicher MySQl,
Aber der bessere Ansatz ist es, sie zu übersetzen,
Sie über diese SQL WHERE clauses: Avoid CASE, use Boolean logic
So
lesenselect * from t where (:param is null and filed is null) or (filed = :param)
Ich glaube, Sie sind Suchen nach NULLIF anstelle von ifnull
Ich denke, besser Ansatz wäre, CASE in where-Klausel in Ihrem Fall zu verwenden.
Wenn Sie mit NULL arbeiten, können Sie keine arithmetischen Operatoren verwenden. Versuchen Sie COALESCE auf eine logische, wenn mit Werten integer oder NULL zu machen
mysql> SELECT COALESCE(NULL,1);
-> 1
mysql> SELECT COALESCE(NULL,NULL,NULL);
-> NULL
Sie diese Alternative können versuchen, dies könnte Ihnen helfen
select * from t where (field = NULL AND param= NULL) OR field ='4'