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

Microsoft SQL Server2005でgroup_concatMySQL関数をシミュレートしますか?

    これを行うための本当に簡単な方法はありません。しかし、そこにはたくさんのアイデアがあります。

    私が見つけた最高のもの:

    SELECT table_name, LEFT(column_names , LEN(column_names )-1) AS column_names
    FROM information_schema.columns AS extern
    CROSS APPLY
    (
        SELECT column_name + ','
        FROM information_schema.columns AS intern
        WHERE extern.table_name = intern.table_name
        FOR XML PATH('')
    ) pre_trimmed (column_names)
    GROUP BY table_name, column_names;
    

    または、データに<などの文字が含まれている可能性がある場合に正しく機能するバージョン

    WITH extern
         AS (SELECT DISTINCT table_name
             FROM   INFORMATION_SCHEMA.COLUMNS)
    SELECT table_name,
           LEFT(y.column_names, LEN(y.column_names) - 1) AS column_names
    FROM   extern
           CROSS APPLY (SELECT column_name + ','
                        FROM   INFORMATION_SCHEMA.COLUMNS AS intern
                        WHERE  extern.table_name = intern.table_name
                        FOR XML PATH(''), TYPE) x (column_names)
           CROSS APPLY (SELECT x.column_names.value('.', 'NVARCHAR(MAX)')) y(column_names) 
    


    1. SQLデータ型を理解する–SQLデータ型について知っておくべきことすべて

    2. ORA-01008:すべての変数がバインドされているわけではありません。彼らは縛られている

    3. pgAuditを使用したPostgreSQLの監査

    4. SQLiteで