准备一些数据:

SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO CREATE TABLE [dbo].[Goods](
[Projname] [nvarchar](10) NULL,
[version] [nvarchar](10) NULL,
[state] [nvarchar](3) NULL
) ON [PRIMARY]
GO INSERT INTO [dbo].[Goods] ([Projname],[version],[state])
VALUES
(N'A项目',N'启动会版',N'已审核'),
(N'A项目',N'方案版',N'已审核'),
(N'A项目',N'施工图版',N'未审核'),
(N'B项目',N' 启动会版',N'未审核'),
(N'B项目',N' 方案版',N'未审核'),
(N'B项目',N' 施工图版',N'未审核') GO

Source Code

先来看看下面2句SQL语句,参数有值和NULL所查询到的结果:

DECLARE @Projname NVARCHAR(10) = N'A项目'
SELECT [Projname],[version],[state] FROM [dbo].[Goods] WHERE [Projname] = @Projname
GO DECLARE @Projname NVARCHAR(10) = NULL
SELECT [Projname],[version],[state] FROM [dbo].[Goods] WHERE [Projname] = @Projname
GO

Source Code

方法一:

DECLARE @Projname NVARCHAR(10) = N'A项目'
SELECT [Projname],[version],[state] FROM [dbo].[Goods] WHERE [Projname] = @Projname
GO DECLARE @Projname NVARCHAR(10) = NULL
SELECT [Projname],[version],[state] FROM [dbo].[Goods] WHERE [Projname] =
CASE WHEN @Projname IS NULL THEN [Projname] ELSE @Projname END GO

Source Code

方法二:

DECLARE @Projname NVARCHAR(10) = N'A项目'
SELECT [Projname],[version],[state] FROM [dbo].[Goods] WHERE [Projname] = @Projname
GO DECLARE @Projname NVARCHAR(10) = NULL
SELECT [Projname],[version],[state] FROM [dbo].[Goods] WHERE [Projname] = @Projname
OR @Projname IS NULL
GO

Source Code

方法三:

DECLARE @Projname NVARCHAR(10) = N'A项目'
SELECT [Projname],[version],[state] FROM [dbo].[Goods] WHERE [Projname] = @Projname
GO DECLARE @Projname NVARCHAR(10) = NULL
SELECT [Projname],[version],[state] FROM [dbo].[Goods] WHERE [Projname] =
IIF(ISNULL(@Projname, N'') = N'', [Projname], @Projname)
GO

Source Code

方法四:

DECLARE @Projname NVARCHAR(10) = N'A项目'
SELECT [Projname],[version],[state] FROM [dbo].[Goods] WHERE [Projname] = @Projname
GO DECLARE @Projname NVARCHAR(10) = NULL
SELECT [Projname],[version],[state] FROM [dbo].[Goods] WHERE [Projname] =
@Projname OR ISNULL(@Projname, N'') = N''
GO

Source Code

方法五:

DECLARE @Projname NVARCHAR(10) = N'A项目'
SELECT [Projname],[version],[state] FROM [dbo].[Goods] WHERE [Projname] = @Projname
GO DECLARE @Projname NVARCHAR(10) = NULL
SELECT [Projname],[version],[state] FROM [dbo].[Goods] WHERE [Projname] =
IIF(@Projname IS NULL, [Projname], @Projname)
GO

Source Code

方法六:

DECLARE @Projname NVARCHAR(10) = N'A项目'
SELECT [Projname],[version],[state] FROM [dbo].[Goods] WHERE [Projname] = @Projname
GO DECLARE @Projname NVARCHAR(10) = NULL IF LEN(ISNULL(@Projname,'')) > 0
SELECT [Projname],[version],[state] FROM [dbo].[Goods] WHERE [Projname] = @Projname
ELSE
SELECT [Projname],[version],[state] FROM [dbo].[Goods]
GO

Source Code

存储过程为参数NULL时的处理方法的更多相关文章

  1. learning java Objects.requireNonNull 当传入参数为null时,该方法返回参数本身

    System.out.println(Objects.hashCode(obj)); System.out.println(Objects.toString(obj)); System.out.pri ...

  2. 后台返回数据事null时怎么进行判断

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...

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

    最近在项目中碰到一个比较有意思的问题,网上查找了一些方法,在这里总结分享一下. 我们经常会碰到这样的场景:需要查询数据,有一些查询条件,但是查询的时候,我们希望在某个条件为空的时候,则不筛选这个条件, ...

  4. 错误笔记 对象为null时调用改对象的方法会报错

    对象为null时调用改对象的方法会报错

  5. Atitit.通过null 参数 反射  动态反推方法调用

    Atitit.通过null 参数 反射  动态反推方法调用 此时,直接使用java  apache的ref工具都失效了.必须要自己实现了. 如果调用接口方法的话,就不能使用apache的ref工具,可 ...

  6. PB中用oracle的存储过程返回记录集做数据源来生成数据窗口,PB会找不到此存储过程及不能正常识别存储过程的参数问题(转)

    (转)在PB中用oracle的存储过程返回记录集做数据源来生成数据窗口 首先oracle的存储过程写法与MSSQL不一样,差别比较大. 如果是返回数据集的存储过程则需要利用oracle的包来定义游标. ...

  7. Sql2008中使用DataTable作为存储过程的参数

    使用DataTable作为存储过程的参数   最近工作中写了几个存储过 程,需要向存储过程中传递字符串,因为SQL Server 2000中没有内置类似于 split 的函数,只好自己处理,将前台数据 ...

  8. 对无返回值、使用Action或Func作为参数、多重载的方法进行单元测试

    VS2012 Unit Test(Void, Action, Func) —— 对无返回值.使用Action或Func作为参数.多重载的方法进行单元测试 [提示] 1. 阅读文本前希望您具备如下知识: ...

  9. 解决JSONObject.fromObject数字为null时被转换为0

    在使用JSONObject.fromObject的时候会遇到一种情况就是当对象的某一个Double型或Integer型的属性为空的时候,转JSON的时候会变成0.当一个布尔型的属性为空的时候,转JSO ...

随机推荐

  1. mysql系列之9.mysql日志&存储引擎

    mysqlbinlog 是什么? 数据目录下的如下文件: mysql-bin.xxxxxx 作用? 记录数据库内部增删改查对mysql数据库有更新的内容的记录 三种模式? statement leve ...

  2. Yii 框架 URL路径简化

    Yii 框架的訪问地址若不简化会让人认为非常繁琐.未简化的地址一般格式例如以下: http://localhost:80/test/index.php?r=xxx/xxx/xxx 若是带有參数会更复杂 ...

  3. ABAP 程序运行时间记录表

    自建表记录程序运行时间,测试程序效率,可作为系统优化工具.

  4. Mysql 外键级联

    如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常 ...

  5. mysql服务器启动问题

    The server quit without updating PID file (/usr/local/mysql/data/snsgou.pid);可能的情况是启动的用户不对,

  6. git创建与管理远程分支【转】

    本文转载自:http://blog.chinaunix.net/uid-9398085-id-3164754.html git创建与管理远程分支 1.远程分支就是本地分支push到服务器上的时候产生的 ...

  7. 使用C++模拟C#的委托机制

    1. [代码][C/C++]代码 //Event.h  #ifndef _EVENT_H_#define _EVENT_H_class EmptyObject {};template<typen ...

  8. linux应用之tomcat安装(centos)

    安装方式:源码安装 软件:apache-tomcat-7.0.29.tar.gz下载地址:http://tomcat.apache.org/download-70.cgi 安装前提 系统必须已经安装配 ...

  9. codeforces 610D D. Vika and Segments(离散化+线段树+扫描线算法)

    题目链接: D. Vika and Segments time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  10. 机器学习 F1-Score, recall, precision

    在机器学习,模式识别中,我们做分类的时候,会用到一些指标来评判算法的优劣,最常用的就是识别率,简单来说,就是 Acc=Npre/Ntotal 这里的 Npre表示预测对的样本数,Ntotal表示测试集 ...