SQL组的一部分字符串

Pio*_*app 12 sql sql-server

我的表中有以下数据:

URL         TIME    DATE
--------------------------------------
/x          11      2013-08-01
/x          11      2013-08-01
/pl/        11      2013-08-01
/pl/        11      2013-08-03
/pl/XXX/    11      2013-08-01
/pl/XXX/    11      2013-08-04
/pl/XXX/1   11      2013-08-01
/pl/XXX/2   11      2013-08-01
/pl/YYY/    11      2013-08-01
/pl/YYY/1   11      2013-08-01
/pl/YYY/2   11      2013-08-04
/pl/YYY/3   11      2013-08-04
Run Code Online (Sandbox Code Playgroud)

有没有办法按URL分组到/SQL Server中的第三个斜杠()?不幸的是,存在少于三个的记录.

And*_*mar 9

计算字符串中斜杠数的一个技巧是:

len(url) - len(replace(url,'/',''))
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用charindex三次来查找第三个斜杠的位置:

select  BeforeThirdSlash
,       max([date])
from    (
        select  case 
                when len(url) - len(replace(url,'/','')) < 3 then url
                else substring(url, 1, charindex('/', url, charindex('/', 
                         url, charindex('/', url)+1)+1)-1)
                end as BeforeThirdSlash
        ,       *
        from    @t
        ) as SubQueryAlias
group by
        BeforeThirdSlash
Run Code Online (Sandbox Code Playgroud)

SQL Fiddle的实例.