zoukankan      html  css  js  c++  java
  • 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)

    查询结果:

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

  • 相关阅读:
    高精度除法(到小数点后200位)
    CodeForces-Zuhair and Strings(思维+枚举)
    Codeforces-Salem and Sticks(枚举+思维)
    idata的各个类型
    C51串口的SCON寄存器及工作…
    XCode快捷键
    Objective-C 的 self 和 super 详解 (用简单程序说明问题)
    UITextFieldDelegate委托方法注释
    Objective-C 基础语法log打印那些事儿(一)
    fcntl详细说明
  • 原文地址:https://www.cnblogs.com/herbert200807/p/4397844.html
Copyright © 2011-2022 走看看