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,结果是什么呢 ?自己试吧,哈哈。
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn