我的目标是从给定的URL中提取域。
为此,我使用以下方法:
select distinct ltrim(rtrim('https://www.youtube.com/watch?v=...', '/'), 'https://')
我得到的结果是:
www.youtube.com/watch?v=...
虽然预计会出现以下情况:
www.youtube.com
如何实现上述目标?
注意:
我注意到trim
函数的工作方式与我的预期不同。
-
select distinct ltrim('https://www.youtube.com/watch?v...', 'youtu')
返回相同的字符串而不进行任何更改。 - 尝试仅按
select ltrim('https://www.youtube.com/watch?v...', '/')
修剪斜杠也会返回相同的字符串。
欢迎任何解释。
修剪仅删除字符串开头和/或结尾的给定字符。您将需要 substr 和 instr。 (https://www.sqlite.org/lang_corefunc.html)
但最好的选择可能是在将代码保存到数据库之前在代码中修复此问题。
最后我没有
使用修剪,而是按照提供的方式使用 substr。
以下方法有效:
select replace(substr(substr(<url>, instr(<url>, '//')+2),0,instr(substr(<url>, instr(<url>, '//')+2),'/')),'.','')
select replace(substr(substr(<url>, instr(<url>, '//www.')+6),0,instr(substr(<url>, instr(<url>, '//www.')+6),'/')),'.','')