在isNull

时间:2018-12-17 16:56:31

标签: sql sql-server

当我发现如果您将NULL加字符串连接在一起时,我正在测试isNull函数,例如:

SELECT isNull(NULL+'123456','I am a flag')

结果既不是“ 1234”也不是“ I is a flag”,而是“ I is a”。 结果的长度取决于连接字符串的长度。

我想知道原因。

2 个答案:

答案 0 :(得分:4)

使用coalesce()

select coalesce(NULL + '123456', 'I am a flag')

ISNULL()严格使用第一个参数的类型。 COALESCE()更为宽容,基本上着眼于所有参数的类型以确定最终类型。另外,COALESCE()是标准SQL。

答案 1 :(得分:4)

ISNULL返回第一个表达式的数据类型。

在查询中,您有NULL+'123456',它是varchar(6)'I am a flag',是varchar(11)NULL + {expression} = NULL,因此返回第二个参数并将其隐式转换为varchar(6),得到'I am a'(第二个表达式的前6个字符)。

相关问题