获取PostgreSQL中2个字符之间的子字符串

获取PostgreSQL中2个字符之间的子字符串,sql,postgresql,Sql,Postgresql,我正在尝试获取postgreSQL中URL之间的字符: www.abc.com/hello/xyz www.abc.com/hi/pqr www.abc.com/yellow/xyz 我想去 你好 嗨 黄色的 这就是我到目前为止所做的: select distinct substring(url, position('/' in url)+ 1) theURL from table; 我只能得到第一个“/” 我不知道如何获取第二个的位置一个方法使用regexp\u split\u to\u a

我正在尝试获取postgreSQL中URL之间的字符:

www.abc.com/hello/xyz

www.abc.com/hi/pqr

www.abc.com/yellow/xyz

我想去

你好

黄色的

这就是我到目前为止所做的:

select distinct substring(url, position('/' in url)+ 1) theURL from table;
我只能得到第一个“/”


我不知道如何获取第二个的位置

一个方法使用
regexp\u split\u to\u array()

或者更好,正如@NeilMcGuigan所说:

select split_part(url, '/', 2)

一种方法使用
regexp\u split\u to\u array()

或者更好,正如@NeilMcGuigan所说:

select split_part(url, '/', 2)

按照子字符串方法,使用第一个子字符串结果进行第二次搜索:

select distinct substring(
  substring(url, position('/' in url)+ 1)
  , 0
  , position('/' in substring(url, position('/' in url)+ 1))) AS theURL 
from table;
基本上,查询所做的是使用
子字符串中的原始结果启动下一个\的搜索,这样它就能够将文本保持在前两个\之间\

如果按字母顺序排序很重要,您可以添加一个外部查询:

SELECT theURL FROM (
select distinct substring(
  substring(url, position('/' in url)+ 1)
  , 0
  , position('/' in substring(url, position('/' in url)+ 1))) AS theURL 
from table
) AS xt
ORDER BY xt.theURL;

按照子字符串方法,使用第一个子字符串结果进行第二次搜索:

select distinct substring(
  substring(url, position('/' in url)+ 1)
  , 0
  , position('/' in substring(url, position('/' in url)+ 1))) AS theURL 
from table;
基本上,查询所做的是使用
子字符串中的原始结果启动下一个\的搜索,这样它就能够将文本保持在前两个\之间\

如果按字母顺序排序很重要,您可以添加一个外部查询:

SELECT theURL FROM (
select distinct substring(
  substring(url, position('/' in url)+ 1)
  , 0
  , position('/' in substring(url, position('/' in url)+ 1))) AS theURL 
from table
) AS xt
ORDER BY xt.theURL;

下面的查询即使对于
www.abc.com/hello

SELECT DISTINCT (regexp_matches(url, '/([^/]+)'))[1] theURL
FROM table;

而且它还会跳过空条目

下面的查询即使对于
www.abc.com/hello

SELECT DISTINCT (regexp_matches(url, '/([^/]+)'))[1] theURL
FROM table;

而且它会跳过空条目

拆分部分(url,“/”,2)
通常是最快的@NeilMcGuigan,无论如何我可以在www.abc.com/yellow/xyz/123/abc中获得黄色后面的所有字符。所以我希望它打印:/xyz/123/abc@NeilMcGuigan但是URL有多种类型:比如www.abc.com/hello/abc/456/989/tyu,我希望它在前面的评论/xyz/123/abc中提到的情况下打印/abc/456/989/tyu。我没有正确理解(url,位置('/'在url中))@NeilMcGuigan。非常感谢。“我脑子里只想着数组。@gordonlinoff我在几年前教的一门课上用了你的书。顺便说一句,谢谢
split_part(url,“/”,2)
通常是最快的@NeilMcGuigan,无论如何我可以在www.abc.com/yellow/xyz/123/abc中获得黄色后面的所有字符。所以我希望它打印:/xyz/123/abc@NeilMcGuigan但是URL有多种类型:比如www.abc.com/hello/abc/456/989/tyu,我希望它在前面的评论/xyz/123/abc中提到的情况下打印/abc/456/989/tyu。我没有正确理解(url,位置('/'在url中))@NeilMcGuigan。非常感谢。“我脑子里只想着数组。@gordonlinoff我在几年前教的一门课上用了你的书。顺便说一句,谢谢!