为什么' - '在SQL中等于0(零)?

时间:2015-02-12 12:28:33

标签: sql-server tsql zero hyphen

在SQL Management Studio中运行以下查询时,结果 1

SELECT 
    CASE WHEN '-' = 0 THEN 
        1 
    ELSE 
        0 
    END

这让我有点害怕,因为我必须多次检查 0 值,并且它似乎很容易等于值' - '

1 个答案:

答案 0 :(得分:8)

你正在以错误的方式看待它。

' - '是一个字符串,因此在将它与整数进行比较时会隐式转换为整数值:

select cast('-' as int) -- outputs 0

为了确保您实际上将一个值与字符串'0'进行比较,请改为进行比较:

select case when '-' = '0' then 1 else 0 end

一般情况下,当您比较不同数据类型的值时,您会遇到麻烦,因为implicit conversions发生在场景后面 - 所以不惜一切代价避免使用它。