sql-server - 为什么 Case 语句在这种情况下返回 1 作为输出?

标签 sql-server sql-server-2008 sql-server-2012

第一种情况: 为什么 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/

相关文章:

sql - SQL 2012 中的条件 where 子句

php - 带限制的 SQL 查询在 phpmyadmin 中不起作用

sql - 如何根据重复项对表列进行排名?

database - 卸载 SQL Server 2012

sql - 如何使用单个语句而不是多个步骤来填充 SQL 表中的空白

sql-server - 如何在 SQL Server 2012 中使用 GROUP BY

sql-server - 数据库设计模式 - 多对多分类/分类标记

sql - 从 SQL Server 中多个数据库的表中选择一个字段

.net - 从.net如何将许多 “batches” SQL发送到Sql-Server而不需要大量往返?

sql-server-2008 - 使用 ADO 将 VBA 连接到 SQL Server - 对象已关闭