SQL:如何获取拆分零件的位置
假设我有一个url“www.dummy.url.com” 我想首先尝试使用非正则表达式函数,例如split_part,在本例中获取最后两个拆分字符串“url”和“com” 如果我知道位置是什么,那么我就可以得到它,但是假设url的形式可以是url.com、www.url.com或asdf.asdf.asdf.url.com。 在这种情况下,我不知道该为参数设置什么 拆分部分(一个随机url,“.”,???)SQL:如何获取拆分零件的位置,sql,regex,string,postgresql,Sql,Regex,String,Postgresql,假设我有一个url“www.dummy.url.com” 我想首先尝试使用非正则表达式函数,例如split_part,在本例中获取最后两个拆分字符串“url”和“com” 如果我知道位置是什么,那么我就可以得到它,但是假设url的形式可以是url.com、www.url.com或asdf.asdf.asdf.url.com。 在这种情况下,我不知道该为参数设置什么 拆分部分(一个随机url,“.”,???) 如果没有regex无法做到这一点,您能建议我一种使用regex的方法吗?您可以在Post
如果没有regex无法做到这一点,您能建议我一种使用regex的方法吗?您可以在PostgreSQL中使用regex执行类似的操作。只是用CTE编写了一些快速SQL,这样您就可以在空闲时分解它们并理解它们
with dataset as (
select regexp_split_to_table('www.dummy.url.com', '\\.') as urlsplit
),
dataset_withsr as (
select row_number() over() as sr, urlsplit from dataset
)
select urlsplit from dataset_withsr order by sr desc limit 2
-- Result:
com
url
如果你想用逗号把它们分开,比如url,com
with dataset as (
select regexp_split_to_table('www.dummy.url.com', '\\.') as urlsplit
),
dataset_withsr as (
select row_number() over() as sr, urlsplit from dataset
),
required_data as (
select 1 as col1, sr, urlsplit from dataset_withsr order by sr desc limit 2
),
nicely_ordered_data as (
select col1, urlsplit from required_data order by sr
)
select col1, string_agg(urlsplit, ', ') from nicely_ordered_data group by col1
-- Result
url, com
请在没有提供可能的解决方案的情况下重新解释您试图实现的目标