【问题标题】:Need Help Extracting Values from URL Link in SQLite需要帮助从 SQLite 中的 URL 链接中提取值
【发布时间】: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')
  • 有没有办法创建一个新列而不是替换原来的列?

标签: sql sqlite


【解决方案1】:

字符串操作?我使用字符串“内容类型”和 PatIndex() 来查找该字符串存在的位置,然后使用 CharIndex() 来查找内容 id 的开始和结束斜杠。然后 Substring() 将字符串拉出来。

    Create Table #links
    (
    link VarChar(200)
    )
    Insert Into #links Values
    ('''https://''website name''/''language''/''type of content''/''en_au''/''name of content'''),
    ('''https://''website name''/''language''/''type of content''/''fr_ca''/''name of content'''),
    ('''https://''website name''/''language''/''type of content''/''en_us''/''name of content''')

Query

    Select SubString
          (
           link,
           PatIndex('%type of content%',link)+17,
           CharIndex('/',link,PatIndex('%type of content%',link)+17)-CharIndex('/',link,PatIndex('%type of content%',link))-1
          )
           As YourNewColumn
    From #links

结果

YourNewColumn
'en_au'
'fr_ca'
'en_us'

【讨论】:

    【解决方案2】:

    想通了。这是 Sqlite 的答案:

    SELECT
    	substr(links, instr(links, 'type of content') + 11, 6) AS content_id
    FROM df

    如果您有一种类型的内容,例如在我的情况下,我只有 blog_posts,那么您可以使用 10。数字 10 允许您在指向 content_id 的 url 链接中跳过“blog_posts/”。由于我所有的内容 ID 都是 6 个字符长,因此我输入 6 以仅捕获 6 个值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多