【发布时间】:2018-03-16 15:26:41
【问题描述】:
为什么会这样?
在以下示例中,当 i ISNULL 比较空白 int 和空白 varchar 时,它们彼此相等。 当相同的逻辑用转换包装时,它们彼此不相等。
DECLARE @myint int
DECLARE @mychar VARCHAR(200)
SET @myint = null
SET @mychar = NULL
SELECT CASE when CONVERT(VARCHAR(40),iSNULL(@myint,'')) = CONVERT(VARCHAR(40),ISNULL(@mychar,'')) THEN 1 ELSE 0 END AS 'poop'
SELECT CASE when iSNULL(@myint,'') =ISNULL(@mychar,'') THEN 1 ELSE 0 END AS 'poop'`
这是一个问题的原因是因为我正在创建带有几个附加字段的哈希键。我最近将一个字段的数据类型从 varchar 更改为 int(该字段只存储一个 int),现在当该字段为 null 时,生成的 hashkey 不同,因为 Convert 函数以某种方式将数据视为不同。
【问题讨论】:
标签: sql sql-server type-conversion isnull