当前位置: 首页 > 图文教程 > 数据库 > MSSQL > sql 语句中的 NULL值

MSSQL
MS-sql 2005拒绝了对对象 ''xxx'' (数据库 ''xxx'',架构 ''dbo'')的 SELECT 权限的解决方法
MSSQL 2005 LOG备份webshell的方法
快速将珊瑚虫IP数据库转MS SQL2005的图文教程
sql2005 远程连接问题解决方法
SQLServer 2005 列所有存储过程的语句
SQL Server 2005 模板参数使用说明
Sql Server 2005 默认端口修改方法
SQL Sever 2005 Express 安装失败解决办法
sql2005 根据指定字段排序编号
监视SQLServer数据库镜像[图文]
sqlserver2008 拆分字符串
字符串聚合函数(去除重复值)
SQL Server 2005 同步复制技术
SqlServer2005 链接服务器用法
SQL2008中 阻止保存要求重新创建表的更改 的解决方法
sql rollup用法 小计汇总
SQLServer 2008 Merge语句的OUTPUT功能
SQLServer 2008 新增T-SQL 简写语法
SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法
SQL2005 学习笔记 公用表表达式(CTE)

MSSQL 中的 sql 语句中的 NULL值


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 195 ::
收藏到网摘: n/a

sql 语句中的 NULL值 ,需要的朋友可以看看。 今天写了这样的代码
复制代码 代码如下:

  DECLARE @atr NVARCHAR(20)
  SET @atr = NULL
  IF(@atr = NULL)
  BEGIN
  PRINT 1
  END
  原本是想打印出1的。但是没有。 把 代码修改成如下:
  DECLARE @atr NVARCHAR(20)
  SET @atr = NULL
  IF(@atr IS NULL)
  BEGIN
  PRINT 1
  END

  这样就正确打印出1了。
  然后自己有做了如下的修改,把if语句修改成
复制代码 代码如下:

  IF(NULL = NULL)
  BEGIN
   PRINT 1
  END

  结果:不会打印出1
  由此我们可以总结sql语句中的NULL值和任何值在做 ”=“运算的时候都不会相等。 要用" IS NULL " 做是否是NULL值的判断。
  我们还可以用函数 ISNULL(@str,0) = 0 来判断 变量是否是NULL值。
  小问题,记录一下,强化记忆,善于总结,不走冤枉路。
================================================================================
  补充:NULL 与 "+" 运算符。
  “+” 可以用来做字符串的连接,还可以做加法运算,那么NULL值和字符串做“+”会是什么样的结果?我写了下面的验证程序:
  
复制代码 代码如下:

  DECLARE @str NVARCHAR(200)
  DECLARE @str1 NVARCHAR(200)
  DECLARE @str2 NVARCHAR(200)
  SET @str = NULL
  SET @str1 = 'You look pretty today'
  SET @str2 = @str + @str1
  PRINT @str2

  结果什么东西都没有打印出来,为什么呢 ?我们测试一下@str2现在是何值?
  IF(@str2 IS NULL)
  PRINT 1
  结果打印出1,于是我们可以猜测NULL和任何类型做“+”运算结果仍为NULL值
  
  再写一个NULL和INT类型做"+"的验证程序:
复制代码 代码如下:

  DECLARE @num INT
  DECLARE @num1 INT
  DECLARE @num2 INT
  SET @num = 1
  SET @num1 = 2
  SET @num2 = @num + @num1
  PRINT @num2

  结果打印出3,将红色加粗部分换成 SET @num = NULL,结果是什么呢 ?自己试吧,哈哈。