ホームページ >データベース >mysql チュートリアル >SQL クエリの結果を単一の文字列に連結するにはどうすればよいですか?

SQL クエリの結果を単一の文字列に連結するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-04 10:19:35462ブラウズ

How to Concatenate SQL Query Results into a Single String?

SQL クエリ結果を単一の文字列に連結する

問題:

SQL では、関数に次のクエリを取得するクエリが含まれています。 AccountCodes テーブルの CodeName 値を Sort で並べたリスト。目標は、これらの値を 1 つの文字列に連結し、その結果を CodeNameString 変数に保存することです。

解決策:

FOR XML PATH と STUFF を使用する ( SQL Server 2005 または後で):

DECLARE @CodeNameString varchar(100)

SELECT 
   @CodeNameString = STUFF( (SELECT ',' + CodeName 
                             FROM dbo.AccountCodes 
                             ORDER BY Sort
                             FOR XML PATH('')), 
                            1, 1, '')

このメソッドは、FOR XML PATH 句を使用して CodeName 値を XML 文字列に連結します。結果の XML は、STUFF 関数を使用して最初の文字 (カンマ) が削除された文字列に変換されます。

注: CodeName 値に次の値が含まれている場合、この方法は機能しない可能性があります。 <、>、& などの特定の文字。このような場合、以下に提案するような代替ソリューションが推奨されます。

代替ソリューション (DISTINCT および FOR XML RAW を使用):

DECLARE @CodeNameString varchar(100)

SELECT 
   @CodeNameString = DISTINCT(CodeName) 
WHERE 
   EXISTS (SELECT 1 FROM dbo.AccountCodes WHERE CodeName = @CodeNameString)
FOR XML RAW, ',')

Thisこのメソッドは、FOR XML RAW 句を使用して、重複を除いた連結された値を含む XML 文字列を作成します。次に、文字列が CodeNameString 変数に割り当てられます。

以上がSQL クエリの結果を単一の文字列に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。