sql - 如何在 Oracle SQL 请求中使用正则表达式
问题描述
我在数据库中有这个复杂的字符串,它表示由分隔符“|”分隔的 4 个元素
1944913|200010|157|4*
1944913|200085|157|1.22*
注意:两行字符串都存在于同一数据库行中。一个单元格中最多可以有 10 行字符串
我想要一个 oracle sql 命令,给定 200010 或 200085,返回它旁边的第一个或第二个元素,例如:
给定 200010,返回 157 或返回 4* 给定 200085,返回 157 或返回 1.22
我该怎么做呢?
解决方案
您可以使用 regexp_substr 和 instr 来获得所需的结果:
select a.*,
CASE WHEN instr(text1,'200085')>0 then REGEXP_SUBSTR (substr(text1,instr(text1,'200085'),500),'[^,|]+', 1, 2)
ELSE NULL END as partA,
CASE WHEN instr(text1,'200085')>0 then REGEXP_SUBSTR (substr(text1,instr(text1,'200085'),500),'[^,|]+', 1, 3)
ELSE NULL END as partB
from tableA a
只需将 '200085' 替换为您要查找的字符串,您就可以开始使用了。希望这可以帮助。
推荐阅读
- nuxt.js - NuxtJS2 和 Cloudinary 上传 API:如何从 Cloudinary 中删除资产?
- mysql - 如何按 RAND() 排序并随机设置 LIMIT?
- javacard - 提供共享密钥 - JavaCard Applet
- python - 无法估算缺失的数值
- java - Java 格式化 - 某些数据未对齐
- ibm-cloud - 无法在 IBM Cloud Lite 上部署 Node RED
- sql - 将 postgres 主键和外键从 varchar 更改为 uuid
- c# - 如何使用 MassTransit 连接两个 RabbitMQ 服务器
- r - R:合并部分匹配的数据
- python - 无法加载 API 定义 Swagger - Django rest 框架