日期:2014-05-19  浏览次数:20501 次

字符串分行问题 (弄了一天没弄成,大虾救命)
以下是某sql语句的查询结果:

id         col1         col2
1               a             111111111111111111111111111111111
2               g             22222
3               k             77777777777777777777777777777777777777777
..             ..           .......


为方便打印                          

id         col1         col2
1               a             111111111111
                              111111111111111111111
2               g             22222
3               k             77777777777777777777
                              777777777777777777777
..             ..           .......


DECLARE   @s   varchar(2000)
DECLARE   @id   int,@col1   varchar(20),@col2   varchar(100)
SET   @s= 'SELECT   '
DECLARE   cur   CURSOR   FOR
SELECT   top   16   id,col1,col2   FROM   test                        
OPEN   cur
FETCH   NEXT   FROM   cur
INTO   @id,   @col1,@col2

WHILE   @@FETCH_STATUS   =   0
BEGIN
IF   LEN(@col2)> 15
BEGIN
SELECT   @s=@s+ ' ' ' '+RTRIM(@id)+ ' ' ', ' ' '+@col1+ ' ' ', ' ' '+LEFT(@col2,15)+ ' ' '   UNION   ALL  
SELECT   NULL,NULL, ' ' '+RIGHT(@col2,LEN(@col2)-15)+   ' ' '   UNION   ALL   select '
END
ELSE
BEGIN
SELECT   @s=@s+ ' ' ' '+RTRIM(@id)+ ' ' ', ' ' '+@col1+ ' ' ', ' ' '+@col2+ ' ' '   UNION   ALL     SELECT   '
END

FETCH   NEXT   FROM   cur
INTO   @id,   @col1,@col2
END
SELECT   @s=LEFT(@s,LEN(@s)-16)
EXEC(@s)
CLOSE   cur
DEALLOCATE   cur
GO


语句中   SELECT     top   16   id,col1,col2   FROM   test   语句成功(但是     top   17   以后   就失败     也就是只有前16行可以执行)
换了一个表出现相似问题(到   top   25   以后   失败)




------解决方案--------------------
显示问题留给前台程序去做.
------解决方案--------------------
有应用程序处理不好?这效率不高
------解决方案--------------------
同意楼上,显示问题留给前台程序去做.

使用PB的数据窗口,其有自动折行功能.
------解决方案--------------------
把换行的功能在前台实现
------解决方案--------------------