从SQL中的URL提取整数ID

时间:2019-06-20 23:07:10

标签: sql regex

给出一个https://xyz.abc.yahoo.com/issues/80483987/tasks/1之类的网址

如何编写SQL查询以用其80483987的整数ID替换/提取类似的网址

使用REGEXP_REPLACE(mystr, r'[^\d]+', ' ')给我80483987 1

最后的1是个问题。

2 个答案:

答案 0 :(得分:1)

两次应用'Meta.fields' contains fields that are not defined on this FilterSet: is_active

REGEXP_REPLACE

说明

内部调用删除所有前导非数字,外部调用删除ID后的后缀。 REGEXP_REPLACE(REGEXP_REPLACE(mystr, r'^[^\d]+', ''), r'/.*$', '') ^是所谓的锚点,不代表字符,而是“测试字符串的开始/结尾”的抽象(0长度)概念。    这将适用于所有常见的正则表达式样式和引擎。

解决方案取决于构成URL中位置段的数字ID。

请注意,该方法很脆弱:例如带有端口号的网址将失败。

答案 1 :(得分:1)

您可以简单地REGEXP_EXTRACT子字符串后的数字/issues/

REGEXP_EXTRACT(mystr, r'/issues/([0-9]+)')

请参见regex demo

/issues/将被匹配,([0-9]+)捕获 1个或更多数字进入捕获组#1,这就是REGEXP_EXTRACT返回的值。 / p>