一般如果使用@query时,
我们的sql是这样的:
select * from t
where (ifnull(:a,'')='' or t.a=:a)
and (ifnull(:b,'')='' or t.b=:b)
但如果a参数是一个数组a=[1,2,3],怎么办?ifnull会变成ifnull(1,2,3,'')=''
这时我们可以使用 COALESCE(:a) is null
select * from t
where (COALESCE(:a) is null or t.a in (:a))
and (ifnull(:b,'')='' or t.b=:b)

当在SQL查询中使用数组参数如a=[1,2,3]时,不能直接用IFNULL函数。可以改用COALESCE配合ISNULL或IN操作符,如`COALESCE(:a)ISNULLORt.aIN(:a)`,同时保持其他条件过滤,确保查询的正确性。
3781

被折叠的 条评论
为什么被折叠?



