我有这个查询
SELECT ISNULL(LEFT(NULL, 8), '1234567890')
我得到的结果是"1"而不是"1234567890"。我错过了什么?
我正在使用 SQL Server 2014。
ISNULL 和 COALESCE 之间的一个区别是,ISNULL 将参数的长度限制为第一个参数的长度,而 COALESCE 则不会。 尝试以下操作以了解差异
DECLARE @i AS VARCHAR(4) = NULL,
@j AS VARCHAR(6) = 'abcdefg'
SELECT ISNULL(@i, @j)
SELECT COALESCE (@i, @j)
要将结果的长度限制为 8 个字符,您需要
SELECT ISNULL(cast(NULL as varchar(8)), '1234567890') ;
ISNULL 结果的数据类型是使用第一个参数推断的。