ホームページ > データベース > mysql チュートリアル > SQL Server 2005でMySQLのGroup_Concatをシミュレートする方法は?

SQL Server 2005でMySQLのGroup_Concatをシミュレートする方法は?

Barbara Streisand
リリース: 2025-01-25 19:17:11
オリジナル
294 人が閲覧しました

How to Simulate MySQL's group_concat in SQL Server 2005?

SQL Server 2005 での MySQL の group_concat のレプリケーション

SQL Server 2005 には MySQL にある便利な group_concat 関数がないため、グループ内の値を連結する必要がある場合に問題が生じます。カスタム関数は解決策を提供しますが、実装に詳しくない人にとっては扱いにくい場合があります。

実際的な代替方法は、SQL Server のシステム テーブルと FOR XML PATH 関数を利用します。 以下に例を示します:

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);
ログイン後にコピー

これらのメソッドは、複雑なユーザー定義関数を必要とせずに group_concat を効果的に模倣しているため、高度な SQL の経験が浅い開発者でもプロセスが簡単になります。

以上がSQL Server 2005でMySQLのGroup_Concatをシミュレートする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート