2016-08-10 8 views
0

以下のクエリは、私が取り組んでいるアプリケーションにとって非常に便利です。しかし、私はテーブルの選択の値を置き換える必要があります。SQL Server 2008で選択範囲を逆にして分割する方法は?

WITH data AS 
(
    select Value, REVERSE(Value) AS ReverseValue from (values 
     ('texttext/21/812/21a'), ('texttext/6/163/38a'), ('texttext/53/7a/a2'), ('text/t/e/xt/53/7a/a2') 
    )t(Value) 
), split AS 
(
    select 
     Value, ReverseValue, 
     reverse(substring(ReverseValue, 1, P1.Pos - 1)) AS Forth, 
     reverse(substring(ReverseValue, P1.Pos + 1, P2.Pos - P1.Pos - 1)) AS Third, 
     reverse(substring(ReverseValue, P2.Pos + 1, P3.Pos - P2.Pos - 1)) AS Second, 
     reverse(substring(ReverseValue, p3.Pos + 1, len(ReverseValue))) AS First 
    from data  
     cross apply (select (charindex('/', ReverseValue))) as P1(Pos) 
     cross apply (select (charindex('/', ReverseValue, P1.Pos+1))) as P2(Pos) 
     cross apply (select (charindex('/', ReverseValue, P2.Pos+1))) as P3(Pos) 
) 
select Value, First + '-' + Forth + Third + Second AS NewValue from split 

ので、代わりの(values ('texttext/21/812/21a') (...)私は(select myfield from myutable)ような何かをしたいです。どのようにそれを行うための任意のアイデアですか?ありがとう。

答えて

1

ただ、最初のCTEの値を置き換えます。

WITH data AS (
    select myfield, REVERSE(myfield) AS ReverseValue 
    from mytable 
    ), 
    . . . 
関連する問題