Sql “为什么是”的结果;选择ISNULL(左(NULL,8)和1234567890';);返回为';1';而不是';1234567890';?
我有这个疑问Sql “为什么是”的结果;选择ISNULL(左(NULL,8)和1234567890';);返回为';1';而不是';1234567890';?,sql,sql-server,Sql,Sql Server,我有这个疑问 SELECT ISNULL(LEFT(NULL, 8), '1234567890') 我得到的结果是“1”,而不是“1234567890”。我错过了什么 我正在使用SQL Server 2014。将结果长度限制为所需的8个字符 SELECT ISNULL(cast(NULL as varchar(8)), '1234567890') ; ISNULL结果的数据类型是使用第一个参数推断出来的。ISNULL和COALESCE之间的一个区别是,ISNULL将参数长度限制为第一个参数的
SELECT ISNULL(LEFT(NULL, 8), '1234567890')
我得到的结果是“1”,而不是“1234567890”。我错过了什么
我正在使用SQL Server 2014。将结果长度限制为所需的8个字符
SELECT ISNULL(cast(NULL as varchar(8)), '1234567890') ;
ISNULL结果的数据类型是使用第一个参数推断出来的。ISNULL和COALESCE之间的一个区别是,ISNULL将参数长度限制为第一个参数的长度,而COALESCE不会。尝试下面的方法来了解区别
DECLARE @i AS VARCHAR(4) = NULL,
@j AS VARCHAR(6) = 'abcdefg'
SELECT ISNULL(@i, @j)
SELECT COALESCE (@i, @j)
可能一些隐式类型转换到
varchar(1)
或char(1)
使用coalesce,它将返回值