sql - 如何使用 REGEX_SUBSTR
问题描述
我需要从长字符串中提取子字符串。我尝试了以下查询但不起作用,它返回我 NULL,我想提取<cc>
和之间的第一个值 12</cc>
select regexp_substr('<CC>3</CC><CN>ROSSI</CN><NO>MARIO</NO><IN>VIA DELLE MIMOSE 4</IN>,'<CN>[^</CN>]*')
"REGEXPR_SUBSTR"
FROM DUAL;
结果我得到了,<CN>ROSSI
但我也想消除 <CN>
,有什么建议吗?
解决方案
不要使用正则表达式来解析 XML 数据;使用适当的 XML 解析器:
SELECT t.*
FROM XMLTABLE(
'/root'
PASSING XMLTYPE(
'<root>'
|| '<CC>3</CC><CN>ROSSI</CN><NO>MARIO</NO><IN>VIA DELLE MIMOSE 4</IN>'
|| '</root>'
)
COLUMNS
cc NUMBER PATH './CC',
cn VARCHAR2(20) PATH './CN',
no VARCHAR2(20) PATH './NO',
"IN" VARCHAR2(50) PATH './IN'
) t
哪个输出:
抄送 | 中文 | 否 | 在 -: | :---- | :---- | :----------------- 3 | 罗西 | 马里奥 | 通过戴尔 MIMOSE 4
db<>在这里摆弄
推荐阅读
- r - 如何从 R 在 Outlook 中发送延迟传递的电子邮件?
- php - sqlsrv_query 插入没有重复的php
- python - 从每个维度正交的 3D NumPy 数组中获取随机 2D 切片
- python - 在 Python 中删除 NFC 标签
- java - JMXBeanWrapper 无法使用修饰符“public”访问“JMX”类的成员
- python - Python,在并行子任务中使用 tqdm 进行跟踪
- amazon-web-services - AWS:如何对多个 VPC 进行负载均衡
- eclipse - Eclipse 2020-09 中没有 JavaScript 语法高亮显示
- angular - Angular 8 是否需要在所有使用特定选择器的地方包含所有输入和输出属性?
- bash - 如何在 terraform 模块创建的多个 VMWare 虚拟机上运行 shell 脚本?