2016-12-08 20 views
0

は私を助けて:私はそれを事前に解析のSQL Server 2008 R2内の文字列やVB6.0

Colour red 
Colour blue 
Colour yellow 
Colour navy 
Red blue 
Red yellow 
Red navy 
Blue yellow 
Blue navy 
Yellow navy 

感謝できるように、私はループの解析文字列を作るにはどうすればよいの文字列

Colour - red/blue/yellow/navy 

を持っています

答えて

0

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 
以下に、コード
関連する問題