当前位置: 首页 > 面试题库 >

SQL:取消null参数上的“ where”

岳泉
2023-03-14
问题内容

这可能很明显,但我感到非常困惑。

我有一个带where子句(带参数列表的where)的SQL查询。如果所有这些参数都为null,则需要SQL忽略where子句并检索所有记录。这在SQL中容易做到吗?我知道一种解决方法是,如果参数为null,则仅使用代码删除where子句。


问题答案:

您可以尝试执行以下操作:

select *
from foo
where (@parameter1 is null AND @parameter2 is null)
OR  (@parameter1 = 'value1'
    AND
    @parameter2 = 'value2')

当然,它需要在您自己的查询中进行一些调整,但是现在您将检查参数是否为空或执行原始的子句。



 类似资料:
  • 问题内容: 我想使用以下函数(在PostgreSQL中): 我将其翻译成英文时可能会有一些错别字,但只要传递有效参数,实际功能就可以正常工作。但是,例如,我的用户可能不想按用户名过滤结果。或者,他可以选择在日期之后携带数据,但不指定结束日期。我可以做一些像 等等。但是,如果我没记错的话,我必须编写49个查询,因为我有7个可能会或可能不会被过滤的参数。我可以这样做,但是如果可能的话,我想通过做类似的

  • 问题内容: 我有一个存储过程,可根据4个参数从表中获取信息。 我想基于参数获取值,但是如果参数为NULL,则不会检查该参数。因此,如果所有4个参数都为null,则将显示整个表。 这是我的SP(如您所见,这仅适用于1个参数atm): 有什么方法可以做到, 而 不必为每种可能的组合都加一个(15个IF)? 问题答案: 怎么样 在这种情况下,您可能还使用了 但总的来说,您可以尝试类似

  • 是否有任何选项可以在Presto cli上提供参数。

  • 问题内容: 我在firebase中执行查询时遇到错误,我的查询代码如下所示: 但是我收到以下错误: 异常java.lang.RuntimeException:无法启动活动ComponentInfo {ucarparceiro.ucarapp.com.ucarparceiro / ucarparceiro.ucarapp.com.ucarparceiro.Activity.ActivityPrinc

  • 问题内容: 我在Access DB的VB应用程序中有此查询: 它给出了我无法解决的以下问题… “查询表达式’ISNULL(a.faultCount,0’)中的函数使用的参数数量错误。” 我要实现的只是将值设置为零,这意味着在特定区域中没有故障。 谢谢你 问题答案: 我想补充我的两分钱,而我喜欢NZ()的简单的语法,如果你寻求无故障性能,既ISNULL()和新西兰()应该有利于为NULL来避免: 。