sql - Oracle Regexp 根据第一次出现的分隔符拆分字符串
问题描述
我有以下数据
1241 - ASGEF - AFZHE
1242 - ASGEF1
1243 - UJHAHAHG - AGHBNG
使用 oracle regexpr 的预期输出
ASGEF - AFZHE
ASGEF1
UJHAHAHG - AGHBNG
解决方案
SUBSTR + INSTR
可能会运行得更快(即不需要正则表达式)。result
表明,同时result_2
显示一个正则表达式选项。
SQL> with test (col) as
2 (select '1241 - ASGEF - AFZHE' from dual union all
3 select '1242 - ASGEF1' from dual union all
4 select '1243 - UJHAHAHG - AGHBNG' from dual
5 )
6 select col,
7 trim(substr(col, instr(col, '-') + 1)) result,
8 ltrim(regexp_substr(col, '-.+'), '- ') result_2
9 from test;
COL RESULT RESULT_2
------------------------ ------------------------ ------------------------
1241 - ASGEF - AFZHE ASGEF - AFZHE ASGEF - AFZHE
1242 - ASGEF1 ASGEF1 ASGEF1
1243 - UJHAHAHG - AGHBNG UJHAHAHG - AGHBNG UJHAHAHG - AGHBNG
SQL>
推荐阅读
- javascript - 将 Wikipedia API 搜索结果写入页面
- javascript - Elementor - 滚动“运动效果”在调整窗口大小之前不起作用
- mysql - 我可以对 MySql 中另一个表上子对象数量的 SELECT 语句进行排序吗?
- node.js - 在 if / then / else 为什么执行 res.end() 会将代码转发到最终的 else 语句?
- python - 返回实例时序列化程序崩溃
- haxe - 打印 eval (文字)而不是人类可读的方式?
- django - 如何在 python 3 中解码 utf-8 编码的字符串?
- c# - EPPlus:为列创建超链接
- jenkins-pipeline - 无法通过 Jenkins Groovy 执行与 Postgres 的连接
- c - 如何使用带有 char 条件的 if 语句将 int 值插入矩阵?