• SQL SERVER中查询参数为空(null)时默认查询所有的实现


        最近在项目中碰到一个比较有意思的问题,网上查找了一些方法,在这里总结分享一下。

    我们经常会碰到这样的场景:需要查询数据,有一些查询条件,但是查询的时候,我们希望在某个条件为空的时候,则不筛选这个条件,处理的思路主要有这么几种:

    1、程序收集查询查询条件的时候处理,这种适合动态SQL的,拼接SQL的时候根据参数是否为空来决定是否拼接对应的查询条件。

    2、SQL中处理,这种情况适合存储过程,参数固定的场景,或者是非拼接where条件的场景,存储过程中一般没有使用拼接SQL的方式,那么如何实现参数为null的时候自动查询所有数据呢?本篇文章就是来讨论这个问题。

    例如有个表叫做book,记录了一些书籍的信息,表比较简单,接下来的截图中可以看到,假如页面上有个查询条件,按照出版社来查找书籍,我们一般的使用方式是这样的(参数的定义以及赋值模拟页面上的数据收集):

    1 DECLARE @publishers VARCHAR(50);
    2 SET @publishers='清华大学出版社';
    3 SELECT * FROM dbo.Book WHERE Publishers=@publishers

    结果如下:

    当出版社筛选条件为null,该如何写SQL呢?

    1 DECLARE @publishers VARCHAR(50);
    2 SELECT * FROM dbo.Book WHERE Publishers=ISNULL(@publishers,Publishers)

    查询结果:

    由此可以实现上述需求,尤其是存储过程的时候可能更适用。

  • 相关阅读:
    VS code常用的几个插件
    vue项目,ie11 浏览器报 Promise 未定义的错误
    npm 安装卸载模块
    System.Reflection.MethodBody.cs
    System.RuntimeMethodHandle.cs
    System.Reflection.MethodBase.cs
    System.Runtime.Serialization.IDeserialezationCallback.cs
    System.Globalization.CompareOptions.cs
    System.Globalization.CompareInfo.cs
    System.Globalization.TextInfo.cs
  • 原文地址:https://www.cnblogs.com/herbert200807/p/4397844.html
Copyright © 2020-2023  润新知