第一种情况:
在这种情况下,为什么Case语句返回1作为输出。
首先我检查了这个查询:
DECLARE @VAR INT=0
SELECT CASE
WHEN @VAR = ' ' THEN 1
ELSE 0
END as empty_string
输出:
empty_string
1
在这种情况下,我尝试这样:
第二种情况:
为什么在分配给本地变量时会有不同的值?
DECLARE @var1 INT =' '
SELECT @var1 AS empty_assighn
SELECT ' ' AS empty_string
输出:
empty_assighn
0
empty_string
-----------
然后我发现每当分配它时,将''(空字符串)作为零值。所以这就是为什么我在第一种情况下得到1作为输出的原因。但是为什么要这样呢?其背后的原因是什么?
提前致谢
最佳答案
因为,下面的查询返回0
SELECT CAST(' ' AS INT)
当您执行
CASE WHEN @VAR = ' ' THEN 1
检查时,条件的右侧将转换为变量的数据类型(INT
)。因此条件结果为True
。