postgres:选择参数为任意值的行

时间:2018-08-21 12:56:39

标签: sql postgresql where

我正在WHERE子句中的查询中传递参数。我想创建一个案例,其中where的任何参数都可以(例如忽略该值)。

例如:

SELECT * FROM USERS WHERE lang=%s

我可以传入占位符字符串,例如“ en”,“ it”,“ es”。但是如果我想把所有的东西都放在lang列中怎么办?就像我在where子句中没有提到lang一样?

是否有类似的东西:

SELECT * FROM USERS WHERE lang=ANYTHING

??

1 个答案:

答案 0 :(得分:2)

您可以使用NULL作为您不关心该语言的指标。然后,您可以使用IS NULL来检查该值是否为null,从而包括所有行。使用OR附加相等检查。这样,如果该值不为null,则它必须与要返回的行的语言匹配。

SELECT *
       FROM users
       WHERE %s IS NULL
              OR lang = %s;