Tsql SQL Server存在谓词

Tsql SQL Server存在谓词,tsql,sql-server-2008r2-express,Tsql,Sql Server 2008r2 Express,我理解这一点 IF EXISTS(SELECT NULL) PRINT 'TRUE'; 总是打印TRUE,因为毕竟NULL在SQL Server中是一个值,但为什么会这样呢 IF EXISTS(SELECT NULL) PRINT 'TRUE' 打印TRUE,因为子查询将导致错误,并且存在始终检查是否存在,所以这是怎么可能的。猜测,因为您的问题中存在复制/粘贴错误 EXISTS不检查值。它检查行 所以这些都是有效的,因为SELECT只给出一行 IF EXISTS(SELECT 1/0) PR

我理解这一点

IF EXISTS(SELECT NULL) PRINT 'TRUE';
总是打印
TRUE
,因为毕竟
NULL
在SQL Server中是一个值,但为什么会这样呢

IF EXISTS(SELECT NULL) PRINT 'TRUE'

打印
TRUE
,因为子查询将导致错误,并且
存在
始终检查是否存在,所以这是怎么可能的。

猜测,因为您的问题中存在复制/粘贴错误

EXISTS不检查值。它检查行

所以这些都是有效的,因为SELECT只给出一行

IF EXISTS(SELECT 1/0) PRINT 'TRUE' 
IF EXISTS(SELECT NULL) PRINT 'TRUE';
IF EXISTS(SELECT CAST('fish' AS int)) PRINT 'TRUE';
为了解释,我们将查看,搜索“
查询表达式191

这是案例3a(我的粗体):

如果
“*”
仅包含在
立即包含在
中,然后
相当于 是一个任意的


因此,这表示您可以在EXISTS位中包含任何旧垃圾:应该忽略猜测,因为您的问题中存在复制/粘贴错误

EXISTS不检查值。它检查行

所以这些都是有效的,因为SELECT只给出一行

IF EXISTS(SELECT 1/0) PRINT 'TRUE' 
IF EXISTS(SELECT NULL) PRINT 'TRUE';
IF EXISTS(SELECT CAST('fish' AS int)) PRINT 'TRUE';
为了解释,我们将查看,搜索“
查询表达式191

这是案例3a(我的粗体):

如果
“*”
仅包含在
立即包含在
中,然后
相当于 是一个任意的


所以,这意味着你可以把任何旧的垃圾放在存在的位置上:它应该被忽略

也许只是我,但这两条线在我看来都是一样的。也许只是我,但这两条线在我看来都是一样的。