代码之家  ›  专栏  ›  技术社区  ›  A G

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

  •  0
  • A G  · 技术社区  · 14 年前

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

    A
    newline
    B
    newline
    C
    newline
    D
    newline
    E
    

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

    A
    newline
    D
    newline
    E
    

    因此,如果B列中没有数据,就不应该有对应于B的换行符。 现在我正在考虑一个带有If-else循环的scaler函数。有更好的办法吗?

    谢谢。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Ranhiru Jude Cooray    14 年前

    我相信你可以用接线员。
    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
    

    这是我刚用自己的数据库尝试过的东西,但我认为这样的东西应该能起到作用:)

        2
  •  1
  •   Martin Smith    14 年前
    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