sql中某一個字段內容為用逗號分割的字符串轉換成多條數據


--創建一個臨時表,並添加數據 

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

--處理結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM