--創建一個臨時表,並添加數據
DECLARE @table1 TABLE(ID INT,VALUE NVARCHAR(50))
INSERT INTO @table1 VALUES(1,'a,b,c,')
INSERT INTO @table1 VALUES(2,'w,')
SELECT * FROM @table1;
--查詢結果是這樣子的
用WITH AS 進行處理
* 需要注意字符串以逗號結束,如果是“a,b,c”,那么查出的數據就只有兩條
* 這里用WITH 是屬於公用表表達式,如果這個語句前面還有語句,那么前一條語句需要用分號結尾
WITH testtb2 AS
(
SELECT
A.ID, A.VALUE, CHARINDEX(',', A.VALUE) AS STA, CHARINDEX(',', A.VALUE) - 1 AS LENS
FROM @table1 AS A
UNION ALL
SELECT
ID, VALUE, CHARINDEX(',', VALUE, STA + 1) AS STA, CHARINDEX(',', VALUE, STA + 1) - STA - 1 AS LENS
FROM testtb2 AS testtb2_2
WHERE (STA <> 0)
)
SELECT TOP (100) PERCENT SUBSTRING(VALUE, STA - LENS, LENS) AS OrderRequest, ID
FROM testtb2 AS testtb2_1
WHERE (STA <> 0)
ORDER BY VALUE
--處理結果