在SQL Management Studio中运行以下查询时,结果将 1 。
SELECT
CASE WHEN '-' = 0 THEN
1
ELSE
0
END
这让我有点害怕,因为我必须多次检查 0 值,并且它似乎很容易等于值' - ' 。
答案 0 :(得分:8)
你正在以错误的方式看待它。
' - '是一个字符串,因此在将它与整数进行比较时会隐式转换为整数值:
select cast('-' as int) -- outputs 0
为了确保您实际上将一个值与字符串'0'进行比较,请改为进行比较:
select case when '-' = '0' then 1 else 0 end
一般情况下,当您比较不同数据类型的值时,您会遇到麻烦,因为implicit conversions发生在场景后面 - 所以不惜一切代价避免使用它。