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

如何在PostgreSQL中查找字符串最后一个单词起始位置 兼容Oracle instr逻辑

PostgreSQL 对应 Oracle 功能实现方案

1. 等价 instr('abc de fgh',' ', -1) 的实现

Oracle 中instr(str, sub, -1)的作用是返回子串在原字符串中最后一次出现的位置,PostgreSQL 通用实现写法如下:

SELECT length('abc de fgh') - strpos(reverse('abc de fgh'), ' ') + 1;

执行返回结果为7,和 Oracle 执行结果完全一致。

2. 业务代码等价实现

你业务中使用的substr(country, instr(country,' ', -1)+1)逻辑是提取country字段最后一个空格之后的所有内容,PostgreSQL 有两种常用实现方式:

  • 全版本兼容写法
-- 替换为你实际的表名即可使用
SELECT reverse(split_part(reverse(country), ' ', 1)) FROM 表名;
  • 正则简化写法
-- 贪婪匹配到最后一个空格并删除,直接得到空格后内容
SELECT regexp_replace(country, '^.* ', '') FROM 表名;

内容的提问来源于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 19:36:00