难题:为什么SQL SERVER合并字符串最多只能是256个字符,郁闷!
示例表:
create table #aa (fsupname varchar(10),fkpono varchar(1000))
GO
insert #aa select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po '
union all select 'a厂 ', 'po-234-ui-po-90 '
我的目的是将按fsupname分组合并fkpono字段值,最后结果是:
fsupname,fkpono
a厂 'po-234-ui-po po-234-ui-po po-234-ui-po …… po-234-ui-po-90
于是我使用以下语句:
declare @fsupname varchar(50),@fkpono varchar(1000)
update #AA set
@fkpono=case when @fsupname=fsupname
then @fkpono+ ' '+fkpono
else fkpono end,
@fsupname=fsupname,
fkpono=@fkpono
但是最多能合并到256个字符时,就不能合并了,SQL也没报错!
请教各位DX,错在地方,万分感激!
[解决办法]
显示问题,你用select len(fkpono),* from #aa 查一下就知道没错
工具-选项-结果-每行最多字符数,改256大一点就可以看到了
[解决办法]
是你定义变量时,VARCHAR指定了大小,VARCHAR最大指定为8000,你定义的小时,显示的就被截断了,如果长度大于8000,就需要别的方法了.
[解决办法]
照你写的,如果你定义VARCHAR为8000,肯定一点问题没有
[解决办法]
照你写的,如果你定义VARCHAR为8000,肯定一点问题没有
示问题,你用select len(fkpono),* from #aa 查一下就知道没错
工具-选项-结果-每行最多字符数,改256大一点就可以看到了
加一行
print @fsupname
print fkpono
就知道错没错
[解决办法]
varchar 类型为8000 是最大期限了,sql 2005 中的varchar(max)等价于varchar(8000)