WITH CTE AS
(
SELECT
PostTitle ,
Keyword ,
1 AS StartPos , -- 錨點起點
CHARINDEX(',',Keyword) AS EndPos -- 錨點終點
FROM @Temp
UNION ALL
SELECT
PostTitle ,
Keyword ,
EndPos + 1 , -- 遞迴起點
CHARINDEX(',',Keyword,EndPos + 1) -- 遞迴終點
FROM CTE
WHERE EndPos > 0 -- CHARINDEX() 大於 0 表示還有逗號存在,遞迴繼續跑,等於 0 則遞迴停止
)
SELECT
PostTitle ,
SUBSTRING
(
Keyword ,
StartPos ,
ISNULL -- 第一個參數假如為 NULL 就抓取第二參數來表示終點
(
NULLIF(EndPos,0) , -- 第一參數;利用 NULLIF() 把終點為 0 的值轉換成 NULL
LEN(Keyword) + 1 -- 第二參數
)
- StartPos
) AS String
FROM CTE
ORDER BY
PostTitle ,
StartPos -- 對起點進行排序,能確保關鍵字呈現順序
沒有留言:
張貼留言