如何使用 REGEXP_SUBSTR 解析数据?

2024-02-20

我有一个像这样的数据集(见下文),我尝试提取形式为 {variable_number_of_digits}{hyphen}{only_one_digit} 的数字:

with mcte as (
select 'ILLD/ELKJS/00000000/ELKJS/FHSH' as addr from dual
union all 
select 'ILLD/EFECTE/0116988-7-002/ADFA/ADFG' as addr from dual
union all
select 'IIODK/1573230-0/2216755-7/' as addr  from dual
union all
select 'IIODK/1573230-0/2216755-700/WRITE' as addr from dual
)
select  addr, 
        REGEXP_SUBSTR(addr,'(\/)([0-9-]+)',1,1,NULL,2) AS num1,
        REGEXP_SUBSTR(addr,'(\/)([^\/]+\/)([0-9\-]+)',1,1,NULL,3) num2
from mcte
;

我没有得到正确的结果集,应该如下所示

+-------------------------------------+-----------+-----------+
|                ADDR                 |   NUM1    |   NUM2    |
+-------------------------------------+-----------+-----------+
| ILLD/ELKJS/00000000/ELKJS/FHSH      | NULL      | NULL      |
| ILLD/EFECTE/0116988-7-002/ADFA/ADFG | NULL      | NULL      |
| IIODK/1573230-0/2216755-7/          | 1573230-0 | 2216755-7 |
| IIODK/1573230-0/2216755-700/WRITE   | 1573230-0 | NULL      |
+-------------------------------------+-----------+-----------+

如何实现这一目标?


如果你想得到第二个和第三个的结果/分隔组然后:

with mcte ( addr ) as (
  select 'ILLD/ELKJS/00000000/ELKJS/FHSH'      from dual union all 
  select 'ILLD/EFECTE/0116988-7-002/ADFA/ADFG' from dual union all
  select 'IIODK/1573230-0/2216755-7/'          from dual union all
  select 'IIODK/1573230-0/2216755-700/WRITE'   from dual union all
  select 'IIODK/TEST/1573230-0/2216755-700/WRITE'   from dual
)
select  addr, 
        REGEXP_SUBSTR(addr,'^[^/]*/(\d+-\d)/',1,1,NULL,1) AS num1,
        REGEXP_SUBSTR(addr,'^[^/]*/[^/]*/(\d+-\d)/',1,1,NULL,1) num2
from mcte;

Output:

ADDR                                   NUM1                NUM2
-------------------------------------- ------------------- -------------------
ILLD/ELKJS/00000000/ELKJS/FHSH
ILLD/EFECTE/0116988-7-002/ADFA/ADFG
IIODK/1573230-0/2216755-7/             1573230-0           2216755-7
IIODK/1573230-0/2216755-700/WRITE      1573230-0
IIODK/TEST/1573230-0/2216755-700/WRITE                     1573230-0

Update:

如果您只想匹配第一个和第二个模式,而不关心它们在字符串中的位置,那么:

with mcte ( addr ) as (
  select 'ILLD/ELKJS/00000000/ELKJS/FHSH'         from dual union all 
  select 'ILLD/EFECTE/0116988-7-002/ADFA/ADFG'    from dual union all
  select 'IIODK/1573230-0/2216755-7/'             from dual union all
  select 'IIODK/1573230-0/2216755-700/WRITE'      from dual union all
  select 'IIODK/TEST/1573230-0/2216755-700/WRITE' from dual union all
  select '1234567-8'                              from dual union all
  select '1234567-8/9876543-2'                    from dual union all
  select '1234567-8/TEST/9876543-2'               from dual
)
select  addr, 
        REGEXP_SUBSTR(addr,'(^|/)(\d+-\d)(/|$)',1,1,NULL,2) AS num1,
        REGEXP_SUBSTR(addr,'(^|/)\d+-\d(/.+?)?/(\d+-\d)(/|$)',1,1,NULL,3) num2
from mcte;

Outputs:

ADDR                                   NUM1                NUM2

-------------------------------------- ------------------- ------------------
ILLD/ELKJS/00000000/ELKJS/FHSH
ILLD/EFECTE/0116988-7-002/ADFA/ADFG
IIODK/1573230-0/2216755-7/             1573230-0           2216755-7
IIODK/1573230-0/2216755-700/WRITE      1573230-0
IIODK/TEST/1573230-0/2216755-700/WRITE 1573230-0           
1234567-8                              1234567-8
1234567-8/9876543-2                    1234567-8           9876543-2
1234567-8/TEST/9876543-2               1234567-8           9876543-2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 REGEXP_SUBSTR 解析数据? 的相关文章

随机推荐

  • 使用 Google API“写入”Google 电子表格时出错

    使用的代码 var values value1 value2 value3 var body values values gapi client sheets spreadsheets values update spreadsheetId
  • 三列 100% 高度 css 布局

    我真的很纠结这个布局的CSS 这是我的 html 代码 div div menu div div div div sidebar div div 我想要左 中 右三列 宽度分别为父级宽度的 25 60 和 15 并且全部扩展至父级 主列 的
  • Java:打破jtable中的焦点循环

    在我的 JTable 中 我想像在 Excel 中一样编辑所有相关单元格 我实现了 ENTER 停止编辑单元格并将焦点转移到下一个单元格 但是 当我在最后一个单元格中按 ENTER 时 焦点循环使我跳到第一个单元格 但我想继续在表之外并将焦
  • Django mysql 连接过多

    我将 Django 与 mysql 一起使用 并遇到连接过多的问题 我从命令行运行 python 脚本 但与 Django 模型集成以检查数据库中的数据 该脚本每 30 秒运行一次 我使用线程来控制它 My function 是检查数据库状
  • 将数据从宽变为长:基于列名称的新变量

    我想将数据集从宽格式重塑为长格式 该数据集包含 300 个变量 每个变量均按照以下原则命名 ModelID Emotion ModelGender 样本数据如下 df lt structure list X71 Anger Male str
  • 向后循环 python 字符串的最佳方法

    向后循环 python 字符串的最佳方法是什么 对于所有需要 1 偏移量的情况 以下内容似乎有点尴尬 string trick or treat for i in range len string 1 0 1 1 print string
  • docker run“--env-file”提供的文件未按预期评估的解决方法

    我当前运行 docker 容器的设置如下 我有一个main env file Main export PRIVATE IP echo localhost export MONGODB HOST PRIVATE IP export MONGO
  • Laravel API,如何正确处理错误

    任何人都知道 Laravel 中处理错误的最佳方法是什么 有什么规则或需要遵循吗 目前我正在这样做 public function store Request request plate Plate create request gt al
  • 如何安装 json gem - 无法构建 gem 本机扩展

    我正在尝试将 Rails 应用程序部署到我的 ubuntu Linux 服务器 我正在使用 capistrano 和捆绑器 当安装 gems 时 它失败并出现以下错误 Installing json 1 7 7 with native ex
  • java计算句子中每个单词的频率

    我正在编写一个非常基本的java程序 它计算句子中每个单词的频率 到目前为止我已经做到了这么多 import java io class Linked public static void main String args throws I
  • MySQL的行数count(*)与information_schema中的table.table_rows不一致

    我遇到了一个奇怪的现象 我希望有人可以向我解释一下 我有一些 静态 表格 它们每天更改一次 mysql gt select appObjectGroups as tbl count as num from appObjectGroups u
  • 数据库丢失!寻找根本原因

    假设有一天 管理员像往常一样来到办公室 在 Sql Server 数据库上执行管理任务 他惊讶地发现数据库丢失了 他不知道是谁删除了它 或者是来自外部批处理或 SQL 注入等 从哪里开始调查 以及应该采取哪些重要参数 发现来找到删除数据库的
  • OpenCPU 上的自定义 R 包/找到包,但没有可见的函数

    CI 为 OpenCPU 编写了一个 R 包 并希望在我自己的云服务器上使用它 即使包本身被识别并且可以更新 我也无法访问任何功能 并且我可以通常通过 POST 和 GET 访问其他 非自定义 例如基本或统计 包 我已经安装了自定义包以及所
  • 根据两个属性值的组合选择唯一节点

    我有一些 XML 看起来像这样
  • 当公式更改单元格值时触发脚本

    我正在使用 Google 脚本 然后在 Google 工作表中的特定列发生更改时发送电子邮件 单元格中的信息可以手动输入 也可以根据其他单元格中的信息使用公式完成 当手动输入信息时 脚本可以正常工作 但在公式运行时则不行 我已经阅读了它并意
  • 为什么我无法从其他节点 IP 访问 kubernetes pod?

    我已经在 Kubespray 的帮助下安装了 kubernetes 集群 集群有 3 个节点 2 个主节点和 1 个工作节点 节点1 10 1 10 110 节点2 10 1 10 111 节点3 10 1 10 112 kubectl g
  • 如何在 NancyFX 中写入流输出?

    我正在使用 Nancy 编写一个简单的 Web 应用程序 至少一个请求会导致长度未知的流 因此我无法提供Content Length 我想用Transfer Encoding chunked 或 在这种情况下同样可以接受 Connectio
  • 在 Ruby 中迭代无限序列

    我正在尝试解决 Project Euler 问题 12 三角形数序列是通过将自然数相加生成的 数字 所以第 7 个三角形数 将为 1 2 3 4 5 6 7 28 前十项是 1 3 6 10 15 21 28 36 45 55 让我们列出前
  • PHP XML/HTML DOM 获取带有空格的 CSS 类属性

    我有以下问题 我正在使用 PHP XML DOM 解析器 当我解析现实世界的 HTML 时 许多元素的 class 属性中都有空格 因此这些元素实际上有多个 CSS 类 但是 当我使用 getAttribute 查询 DOMNode 时 我
  • 如何使用 REGEXP_SUBSTR 解析数据?

    我有一个像这样的数据集 见下文 我尝试提取形式为 variable number of digits hyphen only one digit 的数字 with mcte as select ILLD ELKJS 00000000 ELK