我正在使用PL/pgSQL
(PostgreSQL版本10 ),想知道是否有一种方法可以从WHERE
子句中排除语句。
我的代码:
WHERE
(
e.priority >= priority_from AND
e.priority <= priority_to
) AND
v.id = vocabulary_id_ AND
e.text LIKE '%' || search_phrase || '%'
;
如果参数vocabulary_id_
的值为0
或null
-查询返回0条记录,因为没有vocabulary
的{{1}}等于{{ 1}}或Id
。
如果我使用0
语句-我将最终有2个几乎相同的查询-一个带有null
部分,另一个没有。
是否有一种简便的方法使用IF ELSE
语法排除此部分?
答案 0 :(得分:2)
您可以使用此
WHERE
(
e.priority >= priority_from AND
e.priority <= priority_to
) And (V.id = vocabulary_id_ or vocabulary_id_ is null or vocabulary_id_ = 0) and
e.text LIKE '%' || search_phrase || '%'
;
至少要添加(至少使用SQL Server),这很方便(至少使用SQL Server),但是这些类型的查询有时会导致性能欠佳。我不知道postgres是否就是这种情况。