sql >> データベース >  >> RDS >> Sqlserver

XML タグを使用して行をコンマ区切りの値にする

    サンプル テーブル

    SELECT * INTO Categories
    FROM
    (
       SELECT 1148 CategoryId, 581771 PostId
       UNION ALL
       SELECT 1183 CategoryId, 581771 PostId
       UNION ALL
       SELECT 1184 CategoryId, 581771 PostId   
    )TAB
    
    
    SELECT * INTO TagContent
    FROM
    (
    SELECT 1 [Id], '<blockquote><p><a href="abc.com"></p></blockquote>' TagContent ,    '2014-11-08' StartDate, '2014-11-14' EndDate,  1148 CategoryID, NULL TagTitle     
    
    UNION ALL   
    SELECT  2, '<blockquote><p><a href="abc.com"></p></blockquote>',     '2014-11-25', '2014-12-05',  1183,     '<h1>Aging Title</h1>' 
    
    
    UNION ALL
    SELECT  3, '<blockquote><p><a href="abc.com"></p></blockquote>',     '2014-11-25', '2014-11-27',  1184,     '<h1>Allergies Title</h1>' 
    )TAB
      

    TagTitle を変換します 同じ TagContent のアンバーと区切られた値 . XML 形式が使用されるため、&gt, &lt and を置き換える必要があります。 &to <, > and & .

    クエリ

    SELECT DISTINCT TagContent,STUFF(REPLACE(REPLACE(REPLACE(REPLACE(SUBSTRING(
            (SELECT '&' + TagTitle
            FROM TagContent T2 
            WHERE ST.TagContent=T2.TagContent 
            FOR XML PATH('')),2,200000),'&lt;','<'),'&gt;','>'),'&amp;','&'),'amp;',''),1,'') TagTitle
            FROM Categories CPC
            JOIN TagContent ST ON CPC.CategoryId=ST.CategoryId
      
     


    1. 最新のレコードまたはmysqlの列のすべての個別の値の最大対応日を持つレコードを取得する方法は?

    2. charデータ型が自動的にbpcharに変換されるのはなぜですか?

    3. Oracleデータベースで即時実行するALTER&DROPテーブルDDL

    4. Hekatonのネイティブにコンパイルされたストアドプロシージャを呼び出さない方法