先自定義一個簡單的表(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:替換節點<row>,參數如果是'',將節點定義成空,如果是'xxx',節點定義成<xxx>。這裏不妨可以試下
SELECT * FROM TB01 FOR XML PATH 無參
SELECT * FROM TB01 FOR XML PATH('')
2、逗號分隔的字符串轉列表數據
select
b.text --4.查出text值
from
(select [text]=convert(xml,'<root><v>'+replace(@_text ,',','</v><v>')+'</v></root>'))a
--1.將逗號用xml標籤替換,然後轉換成xml格式
outer apply --2.做關聯查詢
(select [text]=C.v.value('.','nvarchar(100)') from a.[text].nodes('/root/v')C(v))b
--3.將xml內容按照標籤替換拆分節點並查出每個節點的value值標記爲text
當然網上還有其他方法,個人感覺這兩種方法更適合自己,簡單易懂!