在MySQL中按可变长度子字符串分组

时间:2019-06-10 12:46:03

标签: mysql sql

我有一个查询,我需要按可变长度字符串的子字符串分组。字符串是URL中的路径。例如,以下内容应组合在一起...

  1. / health / pushups /
  2. / health / pushups / 1
  3. / health / pushups / 1 /
  4. health / pushups / 1
  5. 健康/保健
  6. health / pushups / 1 /

其中1可以是最多30的任何整数。我希望所有这些都可以在GROUP BY函数中汇总到/ health / pushups /中。

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

嗯。 。 。这很棘手,因为开头是/。这应该起作用:

select (case when url like '/%'
             then substring_index(url, '/', 3)
             else concat('/', substring_index_url, '/', 2))
        end) as grp,
       count(*)
from t
group by grp;

答案 1 :(得分:0)

2个选项:

WHERE ( url LIKE '%health%' and url LIKE '%pushups%' )

或带有REGEXP_LIKE

WHERE REGEXP_LIKE(url,'^+health/pushups')>0