SQLSERVER 帶分隔的字串與列表相互轉換

2021-08-31 23:28:03 字數 916 閱讀 1241

先自定義乙個簡單的表(tb01)資料:

select tb01.cc from (select '香港' cc union all select '上海' cc union all select '北京' cc) tb01
1、列表某列資料轉逗號分隔的字串(這裡的分隔符任意,以英文逗號舉例)

declare @_text varchar(max)

set @_text = stuff((select ','+tb01.cc from tb01 for xml path('')),1,1,'')

這裡兩個知識點:

a、stuff函式:作用是去除拼接的字串最前面的逗號

b、for xml path:替換節點,引數如果是'',將節點定義成空,如果是'***',節點定義成。這裡不妨可以試下

select * from tb01 for xml path 無參

select * from tb01 for xml path('')

2、逗號分隔的字串轉列表資料

select 

b.text     --4.查出text值

from 

(select [text]=convert(xml,''+replace(@_text ,',','

')+'

'))a    

--1.將逗號用xml標籤替換,然後轉換成xml格式

(select [text]=c.v.value('.','nvarchar(100)') from a.[text].nodes('/root/v')c(v))b

--3.將xml內容按照標籤替換拆分節點並查出每個節點的value值標記為text

當然網上還有其他方法,個人感覺這兩種方法更適合自己,簡單易懂!

SQLServer字串拆分並獲取某分隔符的字串

create function dbo f splitstr s varchar 8000 待分拆的字串 split varchar 10 資料分隔符 returns re table col varchar max as begin declare splitlen int 取分隔符的長度,在分隔...

SqlSerVer 列與逗號分隔字串 互相轉換

在專案中,使用sqlserver資料庫,有乙個需求,需要將資料庫的某一列,轉換成逗號分隔的字串。同時,需要將處理完的字串,轉換成為一列。經過查閱資料與學習,通過以下方式可以實現如上所述需求 1 編寫乙個錶值函式,傳入乙個字串,實現轉換成列,條件以逗號分隔 任何符號都可以自定義 空格分隔的字串 cre...

SqlSerVer 列與逗號分隔字串 互相轉換

在專案中,使用sqlserver資料庫,有乙個需求,需要將資料庫的某一列,轉換成逗號分隔的字串。同時,需要將處理完的字串,轉換成為一列。經過查閱資料與學習,通過以下方式可以實現如上所述需求 1 編寫乙個錶值函式,傳入乙個字串,實現轉換成列,條件以逗號分隔 任何符號都可以自定義 複製 空格分隔的字串 ...