需要帮助从SQLite中的URL链接中提取值

时间:2019-07-19 16:38:51

标签: sql sqlite

我正在将DB Browser用于SQLite。

我有一个名为“ df”的表和一列带有一堆名为“ links”的URL链接的列。所有链接均来自同一网站,并采用相同的结构化格式:

https://“网站名称” /“语言” /“内容类型” /“内容ID” /“内容名称”

几种语言示例: 1. en_au 2. fr_ca 3. zh_ 等。

链接的“内容类型”部分也只有一个唯一值。

目标: 我需要帮助从链接中提取所有内容ID。

我已经尝试过正则表达式,但这会拉出所有与正则表达式匹配的信息,而不是内容ID。我还使用了substr函数(请参见下面的代码),但这会引起一些问题: 1.有些链接的开头不是“ www”。 2.并非所有的内容ID都具有相同的字符长度。 3.并非所有的语言ID都具有相同的字符长度。

SELECT
    substr(links, 36, instr(links, '/') +1) AS content_id
FROM df

2 个答案:

答案 0 :(得分:1)

字符串操作?我将字符串'Type of content'与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'

答案 1 :(得分:0)

弄清楚了。这是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个值。