Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:如何获取拆分零件的位置_Sql_Regex_String_Postgresql - Fatal编程技术网

SQL:如何获取拆分零件的位置

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

假设我有一个url“www.dummy.url.com” 我想首先尝试使用非正则表达式函数,例如split_part,在本例中获取最后两个拆分字符串“url”和“com”

如果我知道位置是什么,那么我就可以得到它,但是假设url的形式可以是url.com、www.url.com或asdf.asdf.asdf.url.com。 在这种情况下,我不知道该为参数设置什么 拆分部分(一个随机url,“.”,???)


如果没有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

请在没有提供可能的解决方案的情况下重新解释您试图实现的目标