如何在 postgresql 11 中使用 inticap 并在大写字母中保留最后一部分
How to use inticap and leave last part in capital letter in postgresql 11
我有一个 table,地址全部为大写,但我试图将其格式化为:
145 WELLBEING STREET, PARADE, 伦敦, PP1 5PP
145 Wellbeing Street, Parade, London, PP1 5PP
我该如何使用它?我试过了,用 initcap:
全部转换
UPDATE address_table
SET field_address = initcap(field_address)
然后它选择最后一块并将其转换为大写:
UPDATE address_table
SET field_address = upper(regexp_replace(field_address , '^.*,', ''))
所以我想在 concatenate 中,但我仍然在 initcap 中有最后一块...
我也试过 :
SELECT field_address || upper(trim(reverse(split_part(reverse(field_address ), ',', 1)))) FROM address_table
但我得到的结果是
Southridge, Newbury Hill, Hampstead Norreys, Thatcham, Rg18 0trRG18 0TR
如何删除最后一个逗号后的最后一部分以将其转换为大写?
来自 Postgres 14 :
UPDATE address_table
SET field_address = initcap(replace(field_address, split_part(field_address, ',', -1), '')) || split_part(field_address, ',', -1)
来自 Postgres 10 :
UPDATE address_table
SET field_address = initcap(regexp_replace(field_address, '[^,]+$', '')) || (regexp_match(field_address, '[^,]+$'))[1]
查看dbfiddle中的测试结果。
我有一个 table,地址全部为大写,但我试图将其格式化为:
145 WELLBEING STREET, PARADE, 伦敦, PP1 5PP
145 Wellbeing Street, Parade, London, PP1 5PP
我该如何使用它?我试过了,用 initcap:
全部转换UPDATE address_table
SET field_address = initcap(field_address)
然后它选择最后一块并将其转换为大写:
UPDATE address_table
SET field_address = upper(regexp_replace(field_address , '^.*,', ''))
所以我想在 concatenate 中,但我仍然在 initcap 中有最后一块...
我也试过 :
SELECT field_address || upper(trim(reverse(split_part(reverse(field_address ), ',', 1)))) FROM address_table
但我得到的结果是
Southridge, Newbury Hill, Hampstead Norreys, Thatcham, Rg18 0trRG18 0TR
如何删除最后一个逗号后的最后一部分以将其转换为大写?
来自 Postgres 14 :
UPDATE address_table
SET field_address = initcap(replace(field_address, split_part(field_address, ',', -1), '')) || split_part(field_address, ',', -1)
来自 Postgres 10 :
UPDATE address_table
SET field_address = initcap(regexp_replace(field_address, '[^,]+$', '')) || (regexp_match(field_address, '[^,]+$'))[1]
查看dbfiddle中的测试结果。