DECLARE @s VARCHAR(100) = 'Colour - red/blue/yellow/navy'
DECLARE @output VARCHAR(max)
SELECT @s = @s + '/' , @output = '';
WITH cte1 AS (
SELECT 1 pos
UNION ALL
SELECT pos + 1 FROM cte1 WHERE pos < len(@s)
)
,cte2 AS (
SELECT Row_Number() OVER (ORDER BY pos) Id,pos FROM cte1 WHERE Substring(@s, pos, 1) IN ('-','/')
)
,cte3 AS (
SELECT a.Id, Rtrim(LTrim(SubString(@s, isNull(b.pos, 0) + 1, a.pos - isNull(b.pos, 1) - 1))) word FROM cte2 a
LEFT JOIN cte2 b ON a.Id - 1 = b.Id
)
SELECT @output = @output + ' ' + a.word + ' ' + b.word FROM cte3 a
INNER JOIN cte3 b ON a.Id < b.Id
ORDER BY a.Id
SELECT @output
以下に、コード