求助:分行
以下是某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
*/