sql 语句中的 NULL值

2023年 4月 17日 35.8k 0

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

今天写了这样的代码 复制代码 代码如下:   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,结果是什么呢 ?自己试吧,哈哈。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论