【发布时间】:2019-07-20 02:47:04
【问题描述】:
我正在使用 SQLite 数据库浏览器。
我有一个名为“df”的表和一个包含一堆称为“链接”的 URL 链接的列。所有链接都来自同一个网站并遵循相同的结构格式:
https://'网站名称'/'语言'/'内容类型'/'内容ID'/'内容名称'
语言的几个例子: 1. en_au 2. fr_ca 3. en_us 等等。
此外,链接的“内容类型”部分只有一个唯一值。
目标: 我需要帮助从链接中提取所有内容 ID。
我尝试过正则表达式,但这会提取与正则表达式匹配的所有信息,而不是内容 ID。我也使用了 substr 函数(参见下面的代码),但这会引发一些问题: 1. 部分链接不以“www”开头。 2. 不是所有的内容ID都是相同的字符长度。 3. 并非所有语言 id 的字符长度都相同。
SELECT
substr(links, 36, instr(links, '/') +1) AS content_id
FROM df
【问题讨论】:
-
样本数据,你尝试过的,想要的输出。
-
对不起,如果我的帖子不清楚,但我已经尝试了上面粘贴的代码(substr)。我想要的输出是从我上面发布的 url 链接示例中提取“content_id”。如果有意义的话,我更喜欢寻找第 5 和第 6 '/' 之间的值的方法。也许类似于 excel 中的左或右函数。
-
您可能会发现这个 SO 答案很有用:stackoverflow.com/a/44586265/8339821
-
regexp模式是 regex101.com/r/MWR4kt/1。然后你做select regexp_replace(column, pattern, '\1')。 -
有没有办法创建一个新列而不是替换原来的列?