ホームページ >データベース >mysql チュートリアル >SQL Server 2005 の単一列から複数の値を抽出し、それらをカンマ区切りの文字列に連結するにはどうすればよいですか?
SQL Server 2005 で複数値の列を抽出し、それらをカンマ区切りの文字列に連結します
リレーショナル データベース内の単一のエンティティに関連付けられた複数の値を取得する場合、これらの値を一貫した表現に統合するための革新的な方法を考案する必要がある場合があります。この場合、課題は、特定のユーザーに関連付けられたすべてのエイリアスを UserAliases テーブルから抽出し、それらを単一のカンマ区切り文字列として列に表示することです。
これを行うには、T-SQL の機能を活用して、COALESCE (指定されたパラメーター リストから最初の非 NULL 式を選択できる汎用関数) を使用するカスタム関数を構築します。この関数を使用すると、エイリアスを (カンマで区切って) 繰り返し連結して、各ユーザーの文字列を作成できます。
その方法を見てみましょう:
[dbo].[GetAliasesById] という関数を作成します。この関数はユーザー ID (@userID) を入力パラメーターとして受け入れ、varchar(max) データ型を返します。これにより、マージされたエイリアスの容量に十分なストレージが確保されます。
関数本体で、カンマ区切り文字列のアキュムレーターとして機能する変数 @output を宣言します。
SELECT ステートメントを使用して、指定された userID に関連付けられたエイリアスを UserAliases テーブルから取得します。
COALESCE と ' ' 演算子の組み合わせを使用して、エイリアスを @output 変数に接続し、各エイリアスの間にカンマ区切り文字を必ず挿入します。
最後に、関数の結果として @output の累積値を返します。
この関数をクエリに組み込むには、SELECT と GROUP BY を組み合わせて使用できます。 SELECT ステートメントは、UserID とカスタム関数 dbo.GetAliasesByID(UserID) の呼び出し結果を取得します (それぞれの一意の UserID を使用)。 GROUP BY 句を使用すると、結果が UserID ごとにグループ化され、ユーザーごとにエイリアスを結合できるようになります。
このクエリを実行すると、各ユーザーのすべてのエイリアスがカンマで区切られた 1 つの列に表示された目的の出力が得られます。
以上がSQL Server 2005 の単一列から複数の値を抽出し、それらをカンマ区切りの文字列に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。