带有多个分隔符的SUBSTRING_INDEX

时间:2014-03-20 01:16:02

标签: mysql

我正在尝试从放入我数据库的网址中删除一些信息。我有这个查询:

Select substring_index(refurl,'?gclid',1) as refurl, Count(*)
from leads
group by substring_index(refurl,'?gclid',1)

但是对于分隔符,我真的需要取消这两个:

?gclid or &gclid 

这可以通过在子字符串中执行OR语句来实现,还是完全不同于完成此操作?

2 个答案:

答案 0 :(得分:7)

使用IF

SELECT SUBSTRING_INDEX(refurl, IF(LOCATE('?gclid', refurl), '?gclid', '&gclid'), 1) AS refurl, ...

答案 1 :(得分:1)

以防万一, 我只需要在一定数量之前对字符串进行分组,例如:

hcu
----------------------
AQP Casma 01 HCU 200
AQP Casma 10 HCU 1500
AQP Casma 11 HCU 1500
Cusco 1 HCU 1500
Cusco 2 HCU 200-3
Cusco 3 HCU 200-1
Cusco 12 HCU 200

只获得此项:

AQP Casma
Cusco

我无法使用IF因为多个分隔符,所以我使用的查询是:

SELECT 
 CASE 
    WHEN LOCATE(' 0',hcu )>0 THEN SUBSTRING_INDEX(hcu, '0', 1)
    WHEN LOCATE(' 1',hcu )>0 THEN SUBSTRING_INDEX(hcu, '1', 1)  
END hub  
FROM npi_hist 
GROUP BY hub 

结果是预期的...我不知道为什么正确地将所有库斯科寄存器分组,但它按照我的需要工作。

希望它可以提供帮助。

再见。