sql實現一列的多個結果合併成一個結果,並分割,使用xml for path
阿新 • • 發佈:2022-05-27
引用自:Sql Server 的FOR XML PATH(‘‘)函式用法_chpllp的部落格-CSDN部落格
1. 如下表:
2. 轉換xml
1 |
|
1 |
|
3. 加個分隔符和去掉根節點。
1 |
|
4. 配合stuff函式使用,去掉第一個分隔符號。
1 |
|
5. STUFF ( character_expression , start , length ,character_expression )
character_expression:字元資料
start :指定刪除和插入的開始位置
length :指定要刪除的字元數
character_expression : 替換start 到 length 的字元資料
6. 轉義字元正常顯示
有時候我們的資料庫中有尖括號,然後有用到 xml的時候,sql會自動的把尖括號進行轉義,但是我們不需要轉義,並且對這個有要求要用到,這時候我們可以用value的形式來實現,測試資料:
- --測試資料
- if not object_id(N'Tempdb..#T') is null
- drop table #T
- Go
- Create table #T([ID] int,[Chemistry] nvarchar(47))
- Insert #T
- select 1,N'CaF<sub>2</sub>' union all
-
select 2,N'Al<sub>2</sub>O<sub>3<?sub>'
- Go
- --測試資料結束
用for xml path讀取指標資訊
- SELECT
- STUFF((
- Select ','+Chemistry from #T FOR XML PATH('')),1,1,'')
讀取的結果是這樣的:
我們看到尖括號已經進行了轉義,如果我們還想要尖括號,可以這樣寫:
- SELECT
- STUFF((
- Select ','+Chemistry from #T FOR XML PATH(''),TYPE
- ).value('.','NVARCHAR(MAX)')
- ,1,1,'')
結果: