DECLARE @A NVARCHAR(10),@B NVARCHAR(15) SET @B=‘ABCDEFGHIJKLMNO‘ SELECT ISNULL(@A,@B)
返回的值是:
‘ABCDEFGHIJ‘
为什么不是返回
‘ABCDEFGHIJKLMNO‘
先判断@a返回值字符串长度会默认为A长度,
当A为null时会取值B,只是取值B并不会取B的长度。出现截断
所以isnull函数最后返回的类型会是以第一个参数为准
1、转换第一个参数的长度
SELECT ISNULL(CONVERT(NVARCHAR(15),@A),@B)
2、用CASE处理
SELECT CASE WHEN @A IS NULL THEN @B ELSE @A END
本文出自 “sukun” 博客,请务必保留此出处http://sukunwu.blog.51cto.com/10453116/1736790
原文:http://sukunwu.blog.51cto.com/10453116/1736790