为什么在 SQL 中 '-' 等于 0(零)?
Why is '-' equal to 0 (zero) in SQL?
当您 运行 在 SQL Management studio 中进行以下查询时,结果 将为 1。
SELECT
CASE WHEN '-' = 0 THEN
1
ELSE
0
END
这让我有点害怕,因为我必须多次检查 0 值,它似乎很容易等于值 '-'。
你看错了。
'-' 是一个字符串,因此在与整数进行比较时会隐式转换为整数值:
select cast('-' as int) -- outputs 0
为确保您实际上是在将值与字符串“0”进行比较,请改为这样进行比较:
select case when '-' = '0' then 1 else 0 end
一般来说,当您比较不同数据类型的值时,您是在自找麻烦,因为 implicit conversions 发生在幕后 - 所以不惜一切代价避免它。
当您 运行 在 SQL Management studio 中进行以下查询时,结果 将为 1。
SELECT
CASE WHEN '-' = 0 THEN
1
ELSE
0
END
这让我有点害怕,因为我必须多次检查 0 值,它似乎很容易等于值 '-'。
你看错了。
'-' 是一个字符串,因此在与整数进行比较时会隐式转换为整数值:
select cast('-' as int) -- outputs 0
为确保您实际上是在将值与字符串“0”进行比较,请改为这样进行比较:
select case when '-' = '0' then 1 else 0 end
一般来说,当您比较不同数据类型的值时,您是在自找麻烦,因为 implicit conversions 发生在幕后 - 所以不惜一切代价避免它。