我想把下面的字符串(出现在一个列中)从末尾用空格隔开。对于下面的3行,我需要以下输出
输出:

Country             STATE             STREET    UNIT
AU                  NSW               2         12
AU                  NSW                         51
AU                  NSW                         12

输入:
新南威尔士州圣玛丽诺埃拉广场12 2号,邮编:2760
新南威尔士州库吉南马拉巴路51号,邮编2034
新南威尔士州温斯顿山利斯特街12号,邮编2153

最佳答案

当然,这种条件解析是不可靠的:

t=# with v(a) as( values('12 2 NOELA PLACE ST MARYS NSW 2760 AU')
,('51 MALABAR ROAD SOUTH COOGEE NSW 2034 AU')
,('12 LISTER STREET WINSTON HILLS NSW 2153 AU')
)
select reverse(split_part(reverse(a),' ',1)), reverse(split_part(reverse(a),' ',3)), case when split_part(a,' ',2) ~ '\d' then split_part(a,' ',2) end st, split_part(a,' ',1) un from v;
 reverse | reverse | st | un
---------+---------+----+----
 AU      | NSW     | 2  | 12
 AU      | NSW     |    | 51
 AU      | NSW     |    | 12
(3 rows)

关于sql - 如何在postgres中从字符串末尾应用split_part函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46752914/

10-11 01:54