MySql REGEXP - 如何从URL中提取7位数值

时间:2013-05-13 04:16:46

标签: mysql regex

我在表A中有一个链接(如下所示)字段,其值如下:

  

我需要从链接中提取7位数代码。代码:

1 - 总是7位不包含字符。

2 - 始终包含'/carrier/',距离'/carrier/' 1个部分。

在上面的链接中,代码是2360283和4322830。

请使用RegExp建议选择查询。

谢谢,

2 个答案:

答案 0 :(得分:0)

TRY

$str = 'http://test.abc.com/carrier/CA-9265/2360283/?id=41352626&src=j2w&...';  
SELECT SUBSTRING_INDEX( SUBSTRING_INDEX($str,'/',-2),'/',1)
// return 2360283

阅读SUBSTRING_INDEX了解更多

答案 1 :(得分:0)

假设您不知道carrier和“7位数代码”将出现在哪里,那么您必须计算/carrier/位置并使用相对位置,但仅限于相关行模式

Fiddle

select 
    substring_index(substring_index(link,
                '/',
                find_in_set('carrier',
                        replace(replace(link, ',', '{'), /* { is any weird character */
                            '/',
                            ',')) + 2), /*  +2 => 1 section away from carrier */
        '/',
        - 1)  as SEVENDIGITCODE
from 
    TableA
where
    link regexp '/carrier.*/[0-9]{7}/'