首頁 > 資料庫 > mysql教程 > SQL Server 的 STUFF 函數和 FOR XML PATH 子句如何一起使用來連接群組內的字串?

SQL Server 的 STUFF 函數和 FOR XML PATH 子句如何一起使用來連接群組內的字串?

Linda Hamilton
發布: 2025-01-22 22:59:11
原創
1035 人瀏覽過

How can SQL Server's STUFF function and FOR XML PATH clause be used together to concatenate strings within a group?

SQL Server:組合 STUFF 和 FOR XML PATH 進行分組字串連線

本指南說明如何結合使用 SQL Server 的 STUFF 函數和 FOR XML PATH 子句來有效連接群組內的字串。

了解組件:

  1. FOR XML PATH(''): 子句將查詢結果轉換為 XML 格式。 使用空字串 ('') 作為 PATH 參數會產生指定列中以逗號分隔的值列表,並包含在 XML 標記內。 例如:

    <code class="language-sql">SELECT ',' + name FROM temp1 FOR XML PATH('')</code>
    登入後複製

    這將輸出:,aaa,bbb,ccc,ddd,eee

  2. STUFF 函數: STUFF 函數透過取代字串的一部分來修改字串。 我們在這裡使用它來刪除 FOR XML PATH('') 產生的前導逗號。 此函數的參數是:

    • 原始字串。
    • 替換的起始位置。
    • 要刪除的字元數。
    • 替換字串。

    因此,STUFF((SELECT ',' NAME FROM temp1 FOR XML PATH('')), 1, 1, '') 刪除了最初的逗號,產生:aaa,bbb,ccc,ddd,eee

  3. 連接和分組:最終查詢使用 ID 列將連接的字串連接回原始表,並將結果分組以獲得所需的輸出:

    <code class="language-sql">SELECT ID, abc = STUFF(
                 (SELECT ',' + name
                  FROM temp1 t1
                  WHERE t1.id = t2.id
                  FOR XML PATH('')), 1, 1, '')
    FROM temp1 t2
    GROUP BY id;</code>
    登入後複製

這會產生以下結果集:

Id abc
1 aaa,bbb,ccc,ddd,eee

此方法提供了一種簡潔有效的方法來連接 SQL Server 中群組內的字串,避免了使用更複雜的技術。

以上是SQL Server 的 STUFF 函數和 FOR XML PATH 子句如何一起使用來連接群組內的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板