在SQL Server中匹配正则表达式

时间:2016-02-27 04:02:39

标签: sql-server regex

我正在尝试从其网址中提取Android应用的ID但获取额外的字符 在sql server中使用replace函数,下面是两个示例URL:

  1.   

    https://play.google.com/store/apps/details?id=com.flipkart.android&hl=zh-CN com.flipkart.android

  2.   

    https://play.google.com/store/apps/details?hl=zh_CN&id=com.surveysampling.mobile.quickthoughts&referrer=mat_click_id%3Df1901cef59f79b1542d05a1fdfa67202-20150429-5128 zh_CN& id = com.surveysampling。 mobile.quickthoughts&安培; R

  3. 我现在正在这样做:

    SELECT 
        SUBSTRING(REPLACE(PREVIEW, '&hl=en',''), CHARINDEX('?', PREVIEW) + 4 , 50) 
    FROM OFFERS_TABLE;
    

    但是对于1st,我得到com.flipkart.android这是正确的,但对于第二,我得到en_US&id=com.surveysampling.mobile.quickthoughts&r

    我想从开始时删除en_US&id,从结尾删除&r

    有人可以通过我可以推荐的任何帖子或网址来帮助我吗?

2 个答案:

答案 0 :(得分:2)

似乎你做了一些假设。出现& r因为它是50个字符。你也得到了en_US,因为你在开头假设了4个字符,但你的第二个字符串有更多。也许你可以分开&然后查找以id =。

开头的变量

看起来像这样的功能会有所帮助。 enter image description here

答案 1 :(得分:2)

您实际要做的是提取前面带有id=的字符串,直到找到&,这是URL中变量的分隔符。考虑到这种情况,我提出了以下正则表达式。

正则表达式(?<=id=)[^&]*

解释:它使用lookbehind断言,该字符串前面有id=,直到找到第一个&

Regex101 Demo