2013-10-01 77 views
0

選擇我有一個名爲「page_data」包含一個nvarchar列叫做「路徑」SQL Server 2008中使用正則表達式

的路徑列將包含像follwoing數據表中的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

答案就在您的標題。你爲什麼不就「SQL-Server 2008正則表達式」這個術語進行一些研究(也就是「Google搜索」或「興奮」甚至是蘇寧)? – alzaimar

+0

我有,但找不到任何東西。 – user1024941

+0

有一些文章描述了你必須編寫一個.net程序集,它提供了可以鏈接到SQL-Server並用作函數的功能。 – 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