如何在Postgresql中提取只排除字符串最后一个单词的子字符串



以下Oracle代码的Postgres等效代码是什么:

trim(substr(country, 1, instr(country,' ', -1)-1));

有人能帮我提取字符串的整个部分吗?字符串中不包括最后一个单词,这个单词用空格分隔。例如

明尼苏达州圣路易斯公园,邮编55426-9999
FromTo
纽约5654

您可以使用:

SELECT address,
LEFT(
address,
LENGTH(address) - POSITION(' ' in REVERSE(address))
) AS short_address
FROM   table_name;

对于样本数据:

CREATE TABLE table_name (address) AS
SELECT 'NEW YORK 5654' UNION ALL
SELECT 'ST LOUIS PARK, MN 55426-9999'

输出:

明尼苏达州圣路易斯公园,邮编55426-9999
地址short_address
纽约5654

最新更新