加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL组按字符串的一部分

发布时间:2020-12-12 16:52:02 所属栏目:MsSql教程 来源:网络整理
导读:我的表中有以下数据: 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/ 1
我的表中有以下数据:
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

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

解决方法

计算字符串中斜杠数量的一个诀窍是:
len(url) - len(replace(url,'/',''))

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

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

Live example at SQL Fiddle.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读