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

求助:分行
以下是某sql语句的查询结果:

字段1     字段2     字段3
1               a             111111111111111111111111111111111
2               g             22222
3               k             77777777777777777777777777777777777777777
..             ..           .......


为方便打印                          

字段1     字段2     字段3
1               a             111111111111
                              111111111111111111111
2               g             22222
3               k             77777777777777777777
                              777777777777777777777
..             ..           .......


谢谢!


   


------解决方案--------------------
create table test(id int,col1 varchar(20),col2 varchar(100))
insert test select 1, 'a ', '111111111111111111111111111111111 '
union all select 2, 'g ', '22222 '
union all select 3, 'k ', '77777777777777777777777777777777777777777 '
go

DECLARE @s varchar(2000)
DECLARE @id int,@col1 varchar(20),@col2 varchar(100)
SET @s= 'SELECT '
DECLARE cur CURSOR FOR
SELECT 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 '
END
ELSE
BEGIN
SELECT @s=@s+ 'SELECT '+ ' ' ' '+RTRIM(@id)+ ' ' ', ' ' '+@col1+ ' ' ', ' ' '+@col2+ ' ' ' UNION ALL SELECT '
END

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

drop table test

/*
(所影响的行数为 3 行)
---- ---- --------------------------
1 a 111111111111111
NULL NULL 111111111111111111
2 g 22222
3 k 777777777777777
NULL NULL 77777777777777777777777777
*/