sql - postgres:选择参数为任何内容的行
问题描述
我在 WHERE 子句的查询中传递参数。我想创建一个案例,其中 where 中的任何参数都可以(例如忽略该值)。
例如:
SELECT * FROM USERS WHERE lang=%s
我可以传入占位符字符串,例如“en”、“it”、“es”。但是如果我想在 lang 列中获取所有内容呢?就像我没有在 where 子句中提到 lang 一样?
有没有类似的东西:
SELECT * FROM USERS WHERE lang=ANYTHING
??
解决方案
您可以将NULL
其用作您不关心语言的指标。然后您可以使用IS NULL
来检查该值是否为空,因此包括所有行。用于OR
附加相等性检查。像这样,如果值不为空,它必须与要返回的行的语言匹配。
SELECT *
FROM users
WHERE %s IS NULL
OR lang = %s;
推荐阅读
- python - 如何将查询结果格式化为我的扩展字典对象?
- python - 从 WaldTestResults pandas DataFrame 中提取值
- c++ - C++ 可变参数模板打包到 std::array 并解包
- asp.net-mvc - 如何使用下拉菜单实现 ASP.NET MVC 验证
- django - 如何优化查询 django
- javascript - 在 Next.js 中的文件上传期间,API 解决而没有响应
- c - 代码应用程序在第二个被读取后停止工作
- java - 在Java图形(JFrame)中使用for循环反转“楼梯”
- apache-spark - 使用 pyspark 实现 SCD type2
- django - 如何在 Django 中为 GraphQL 设置 Varnish 缓存