首页 > 其他 > 详细

ISNULL导致截断字符串

时间:2016-01-20 15:46:12      阅读:245      评论:0      收藏:0      [点我收藏+]

先看下面的例子:

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

ISNULL导致截断字符串

原文:http://sukunwu.blog.51cto.com/10453116/1736790

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!