代码之家  ›  专栏  ›  技术社区  ›  91DarioDev

Postgres:选择参数为任何值的行

  •  2
  • 91DarioDev  · 技术社区  · 7 年前

    我在WHERE子句的查询中传递参数。我想创建一个案例,其中任何参数在哪里都是好的(比如输入值)。

    例如:

    SELECT * FROM USERS WHERE lang=%s

    我可以传递占位符字符串,如“en”、“it”、“es”。但是如果我想把朗专栏里的所有东西都拿出来呢?比如我在WHERE子句中没有提到lang?

    是否有如下情况:

    SELECT * FROM USERS WHERE lang=ANYTHING

    ??

    1 回复  |  直到 7 年前
        1
  •  2
  •   sticky bit    7 年前

    你可以使用 NULL 作为一个指标,你不在乎语言。然后你可以用 IS NULL 检查值是否为空,因此包括所有行。使用 OR 附加相等检查。这样,如果值不为空,则必须与要返回的行的语言相匹配。

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