gpt4 book ai didi

postgresql - split_part 函数从第 n 次拆分到字符串末尾

转载 作者:行者123 更新时间:2023-11-29 13:47:00 27 4
gpt4 key购买 nike

在第二个空格之后,我需要获取值直到字符串中的特定位置。来源:

"8 115 MACKIE STREET VICTORIA PARK WA 6100 AU"  
"6A CAMBOON ROAD MORLEY WA 6062 AU"

输出:

"MACKIE STREET VICTORIA PARK"
"CAMBOON ROAD MORLEY"

我试图将街道名称和郊区从开头的单元#、街道#和最后的州、邮政编码、国家分开。

最佳答案

t=# with s(v) as (values('6A CAMBOON ROAD MORLEY WA 6062 AU'),('8 115 MACKIE STREET VICTORIA PARK WA 6100 A'))
, split as (select *,count(1) over (partition by v) from s, regexp_matches(v,'( [A-Z]+)','g') with ordinality t(m,o))
select distinct v,string_agg(m[1],'') over (partition by v) from split where o <= count-(3-1);
v | string_agg
---------------------------------------------+------------------------------
8 115 MACKIE STREET VICTORIA PARK WA 6100 A | MACKIE STREET VICTORIA PARK
6A CAMBOON ROAD MORLEY WA 6062 AU | CAMBOON ROAD MORLEY
(2 rows)

我排除了索引(或任何不适合掩码 [A-Z]+)因此从末尾切掉的不是三个位置,而是两个 (3-1) 其中 1 是提前已知指数。

此外,我不是从第二个空格开始的,因为这会违背您想要的结果...

关于postgresql - split_part 函数从第 n 次拆分到字符串末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46819580/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com