SQL插入换行符和格式化数据

时间:2010-11-21 13:59:10

标签: sql-server-2005

A,B,C,D和E是表中的五列。我需要输出如:

A
newline
B
newline
C
newline
D
newline
E

但两列之间不能有两个换行符(如果一个为空),例如 -

A
newline
D
newline
E

因此,如果B列中没有数据,则不应该有与B对应的换行符。 现在我正在考虑使用If else循环的缩放器函数。有更好的方法吗?

感谢。

2 个答案:

答案 0 :(得分:1)

我相信你可以使用CASE运营商 http://www.tizag.com/sqlTutorial/sqlcase.php

  SELECT CASE WHEN Video_Title IS NOT NULL THEN
       Video_Title + '\n'
       ELSE
       ''      
       END + 

       CASE WHEN Author IS NOT NULL THEN
       Author + '\n'
       ELSE
       ''   
       END +


       CASE WHEN URL IS NOT NULL THEN
       URL + '\n'
       ELSE
       ''   
       END   
FROM Videos

这是我刚用自己的数据库尝试的东西,但我认为这样的事情应该可以解决问题:)

答案 1 :(得分:1)

DECLARE @CRLF CHAR(2)

SET @CRLF = CHAR(10)+ CHAR(13);

WITH t AS
(
SELECT 'A' AS A,'B' AS B, 'C' AS C, 'D' AS D, 'E' AS E UNION ALL
SELECT 'A' AS A,NULL AS B, NULL AS C, NULL AS D, 'E' AS E UNION ALL
SELECT NULL AS A,NULL AS B, NULL AS C, NULL AS D, NULL AS E
)
SELECT 
ISNULL(STUFF(ISNULL(@CRLF + A,'') + ISNULL(@CRLF + B,'') + ISNULL(@CRLF + C,'') + ISNULL(@CRLF + D,'') +ISNULL(@CRLF + E,'')  , 1, 2, ''),'')
FROM t