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

Oracle 23c中如何用更简洁方式截断过长字符串并替换为点?

Oracle 23c 字符串简洁处理方案

需求回顾

处理字符串规则:

  • 若字符串为NULL或长度≤5,直接返回原串
  • 若长度>5,返回前4字符加一个圆点,舍弃其余部分

简洁单步解法

利用Oracle的REGEXP_REPLACE函数,通过正则表达式匹配实现规则,无需CASE表达式:

SELECT 
  str,
  REGEXP_REPLACE(str, '^(.{4}).+$', '\1.') AS processed_str
FROM test;

正则逻辑说明

  • ^(.{4}):捕获字符串开头的4个字符作为分组
  • .+$:匹配4个字符之后的所有后续字符(仅当总长度>5时满足此匹配)
  • 匹配成功时替换为\1.(捕获的4字符加圆点),不匹配时直接返回原字符串(包含NULL和长度≤5的情况)

示例验证

先创建测试表并插入数据:

CREATE TABLE test (str VARCHAR2(50));
INSERT INTO test VALUES ('hello!');
INSERT INTO test VALUES ('world');
INSERT INTO test VALUES ('worl.');
INSERT INTO test VALUES ('x');
INSERT INTO test VALUES ('long text');
INSERT INTO test VALUES ('alsotoolong');
INSERT INTO test VALUES (NULL);

执行查询后,预期结果:

strprocessed_str
hello!hell.
worldworld
worl.worl.
xx
long textlong.
alsotoolongalso.
NULLNULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:51:01