You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL如何实现提取排除最后一个空格分隔单词的子串(Oracle代码适配)

PostgreSQL 等效实现方案

方案1:正则表达式实现(最简洁)

直接通过正则匹配替换掉末尾最后一个空格分隔的单词,代码如下:

trim(regexp_replace(country, '\s+[^ ]*$', ''))

验证效果:

  • 输入字符串 'NEW YORK 5654',输出结果为 NEW YORK
  • 输入字符串 'ST LOUIS PARK, MN 55426-9999',输出结果为 ST LOUIS PARK, MN

方案2:基础字符串函数实现(无正则依赖)

如果不想使用正则,可以用PostgreSQL内置的字符串函数组合实现,逻辑和原Oracle代码完全对齐:

trim(substring(country from 1 for length(country) - strpos(reverse(country), ' ')))

逻辑说明:先将字符串倒序,找到倒序后第一个空格的位置,也就是原字符串最后一个空格的位置,截取到该位置之前的内容后去掉首尾空格即可。

边界场景兼容

如果需要处理输入字符串没有空格的场景,可以加一层判断避免返回空值:

CASE 
  WHEN strpos(country, ' ') = 0 THEN country
  ELSE trim(regexp_replace(country, '\s+[^ ]*$', ''))
END

内容的提问来源于stack exchange,提问作者Shalini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:06:03