0

「path」と呼ばれる NVARCHAR 列を含む「page_data」と呼ばれるテーブルを持つ SQL Server 2008 データベースがあります。

パス列には、次のようなデータが含まれます。

/aaa/bbb
/aaa/bbb/zzz
/aaa/ccc
/aaa/ccc/xxx
/aaa/ddd
/aaa/ddd/yyy

パス データにスラッシュが 2 つしか含まれていない行を選択したいと考えています。したがって、次のデータが返されるはずです。

/aaa/bbb
/aaa/ccc
/aaa/ddd

これを行う方法が思いつきません。誰でも助けることができますか?

4

1 に答える 1

1

してみてください:

;with T as (
    select 0 as row, CHARINDEX('/', Col) pos, Col from page_data
    union all
    select row + 1, CHARINDEX('/', Col, pos + 1), Col
    from T
    where pos > 0
)
select distinct MIN(Col1) Col
from(
    select 
         row,
         Col,
         (case when row=2 then SUBSTRING(Col, 1, pos-1) else Col end) Col1
    from T 
    where pos > 0 and row<3
)x
group by Col

SQL フィドルのデモ

于 2013-10-01T06:39:01.817 に答える