2013-10-01 6 views
0

У меня есть база данных SQL Server 2008 с таблицей под названием «page_data», который содержит столбец NVARCHAR под названием «Путь»SQL Server 2008 выберите с регулярным выражением

Столбец путь будет содержать данные, как происходит некорректно:

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

Я хочу выбрать строки, в которых данные пути содержат только две слэши. Поэтому я должен вернуть следующие данные:

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

Я не могу придумать, как это сделать. Может ли кто-нибудь помочь?

+0

Ответ в заголовке. Почему бы вам просто не провести какое-либо исследование (a.k.a. «googling» или «binging» или даже SO'ing) на термин «регулярное выражение SQL-Server 2008»? – alzaimar

+0

У меня есть, но ничего не могу найти. – user1024941

+0

Есть статьи, описывающие, что вам нужно написать сборку .net, предоставляющую функцию, которая затем может быть связана с SQL-сервером и использоваться как функция. – alzaimar

ответ

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 Fiddle demo

Смежные вопросы