postgres:select 行,参数是任何东西

postgres: select rows where a parameter is anything

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

例如:

SELECT * FROM USERS WHERE lang=%s

我可以传入 'en'、'it'、'es' 等占位符字符串。但是如果我想获取 lang 列中的所有内容怎么办?就像我没有在 where 子句中提到 lang 一样?

是否有类似的东西:

SELECT * FROM USERS WHERE lang=ANYTHING

??

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

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