第一种情况: 为什么 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
。
关于sql-server - 为什么 Case 语句在这种情况下返回 1 作为输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34216676/