日期:2014-05-18  浏览次数:20743 次

varchar 相加 变空
DECLARE @Sql NVARCHAR(max) DECLARE @a NVARCHAR(2000) DECLARE @b NVARCHAR(2000)

set @sql=@a+'...'+@b.....
一段sql相加 我print(@sql)出来 直接是空 如果我去掉一段拼接字段 则能正常输出 请问 为什么

付原sql
SQL code


   SET @Sql = 'SELECT TOP ' + STR(@PageSize) + ' ' + @FieldList + ' FROM (' 
                                       + 'SELECT TOP ' + STR(@PageSize) + ' ' 
                                       + @FieldList + ' FROM '
                                       + @TableName + @new_where2 + @order + ' < '
                                       + '(SELECT MIN(' + @order + ') FROM (SELECT TOP '
                                       + STR(@TotalCount-@PageSize*@PageIndex) + ' ' + @order 
                                       + ' FROM ' + @TableName
                                       + @new_where1 + @new_order2 +' ) AS TMP) '+ @new_order2 
                                       + ' ) AS TMP ' + @new_order1
                        print(@Sql)



------解决方案--------------------
null加上任何值还是null
------解决方案--------------------
那你检查下你去掉的那段拼接是不是null
------解决方案--------------------
你肯定某些变量没有设置初始化值,所以默认会是Null, 拼接字段的结果当然为Null, SET @Sql =之前先把未赋值的变量Set一下,比如Set @new_where1 = ''
------解决方案--------------------
变量没有设置初始化值,null加上任何值为null,检查并给各个变量初值