You need to enable JavaScript to run this app. 如何将Oracle截取竖线前内容的REGEXP_SUBSTR语句转换为PostgreSQL语法
优惠活动
大模型
产品
解决方案
定价
更多

如何将Oracle截取竖线前内容的REGEXP_SUBSTR语句转换为PostgreSQL语法

Oracle字符串截取逻辑转PostgreSQL实现

需求说明

需要删除字符串中竖线|分隔符之后的内容,Oracle环境下原有实现语句为:

select REGEXP_SUBSTR(KEYVALUES,'[^|]+',1,1) from tab1;

输入示例

000000001
000000001|16
000000002
000000002|16
000000003
000000003|16
000000004
000000004|16
000000005
000000006

期望输出

000000001
000000001
000000002
000000002
000000003
000000003
000000004
000000004
000000005
000000006

可用PostgreSQL实现方案

方案1:直接复用正则逻辑(兼容Oracle写法)

PostgreSQL 10及以上版本原生支持REGEXP_SUBSTR函数,原有Oracle语句可以直接执行:

SELECT REGEXP_SUBSTR(KEYVALUES, '[^|]+', 1, 1) FROM tab1;

方案2:使用原生字符串分割函数(性能更优)

推荐使用PostgreSQL内置的SPLIT_PART函数实现,无需正则匹配,执行效率更高,无版本兼容问题:

SELECT SPLIT_PART(KEYVALUES, '|', 1) FROM tab1;

函数说明:

  • 第一个参数:待处理的字符串字段
  • 第二个参数:分隔符,这里为竖线|
  • 第三个参数:返回分割后的第N个部分,这里取第一个部分
    如果字符串中没有对应分隔符,会直接返回原字符串,完全符合需求场景的输出要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 13:45:08