SQL Server で文字列連結を行う場合、FOR XML PATH 関数と STUFF 関数はどのように連携しますか?
Jan 22, 2025 pm 11:02 PMSQL Server の文字列連結: FOR XML PATH と STUFF のマスター
SQL Server は、特に FOR XML PATH
関数と STUFF
関数を使用した強力な文字列操作機能を提供します。 これらの関数は、複数の行のデータを単一の文字列に連結する場合に非常に役立ちます。
FOR XML PATH
FOR XML PATH
関数は、クエリ結果を XML 形式に変換します。 パスを指定することで、XML 構造を制御します。 たとえば、名前のカンマ区切りリストを作成するには:
SELECT ',' + name FROM temp1 FOR XML PATH('')
これにより、先頭にカンマが付いた XML 文字列が生成されます。
STUFF
機能の利用
STUFF
関数は、文字を置換することで文字列を変更します。元の文字列、開始位置、削除する文字数、置換文字列の 4 つの引数を取ります。
上記の XML 出力から最初のカンマを削除するには:
STUFF((SELECT ',' + name FROM temp1 FOR XML PATH('')), 1, 1, '')
これにより、文字列が効率的に消去され、カンマ区切りの名前リストが残ります。
FOR XML PATH
と STUFF
これらの関数を組み合わせることで、強力なレコードセットの連結が可能になります。 次の SQL クエリを考えてみましょう:
SELECT ID, abc = STUFF( (SELECT ',' + name FROM temp1 WHERE t1.id = t2.id FOR XML PATH ('')) , 1, 1, '') FROM temp1 t2 GROUP BY id
このクエリは次の手順を実行します:
-
FOR XML PATH
サブクエリ: このネストされたクエリは、temp1
(t1
というエイリアス) を外側のクエリのテーブル (t2
というエイリアス) に結合して、各 ID に関連付けられた名前を取得します。FOR XML PATH('')
は、これらの名前を単一の XML 要素に連結します。 -
STUFF
機能: 外側のクエリはSTUFF
を使用して、サブクエリによって生成された XML 文字列から先頭のカンマを削除します。 -
GROUP BY
句:GROUP BY id
は、最終結果に一意の ID のみが含まれ、それぞれに対応する連結名が含まれることを保証します。
結論
FOR XML PATH
と STUFF
を組み合わせることで、SQL Server での文字列連結に対する合理化されたアプローチが提供されます。この手法により、書式設定された文字列の作成、複数行のテキストの結合、カスタム集計の構築が簡素化されます。
以上がSQL Server で文字列連結を行う場合、FOR XML PATH 関数と STUFF 関数はどのように連携しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
