我正在使用用于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
最佳答案
字符串操作?我将字符串'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'
关于sql - 需要帮助从SQLite中的URL链接中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57116529/