字符串分行问题 (弄了一天没弄成,大虾救命)
以下是某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的数据窗口,其有自动折行功能.
------解决方案--------------------把换行的功能在前台实现
------解决方案--------------------