首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Oracle Sql中的列中获取所有模式

如何从Oracle Sql中的列中获取所有模式
EN

Stack Overflow用户
提问于 2020-06-30 19:48:08
回答 2查看 61关注 0票数 0

以下是一栏中的文字:

P348955:删除NHA P210面板PN: 6703 ELM21和删除子组件PN: ALT 2000-10-10(项目70) QTY 2EA & PN :ALT 200-11-10 OR ALT(项目75) QTY 1EA和PN ALT 1057-1 QTY 1EA

我希望从该文本中提取所有类似的模式,该模式定义如下:

  1. 查找以“PN”或“PN:”或“PN”开头的任何内容,
  2. 提取后面跟着上述模式的字母数字字符,我希望从

上显示的文本中提取以下内容

“PN:6703 ELM21”、“PN:ELM200 2000-10-10”、“PN:ELM200 200-11-10”、“PN ELM200 1057-1”

我尝试了以下几点:

代码语言:javascript
运行
复制
SELECT REGEXP_SUBSTR( 'P348955: REMOVE NHA P210 PANEL PN : 6703ELM21 & 
REMOVE SUB ASSY PN: ELM2000-10-10 (ITEM 70) QTY 2EA & PN: ELM200-11-10 
OR ALT (ITEM 75) QTY 1EA & PN ELM1057-1 QTY 1EA REQUESTED BY MMEECHAN 
REF ID 7369', '(PN+/s*+:?+/s*+[A-Z][0-9])' FROM DUAL;

期望输出为 PN: 6703ELM21,PN: ELM200 2000-10-10,PN :ELM200 200-11-10,PN ELM200 1057-1。

不确定如何获得此输出

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-01 07:12:24

这将使您的输出每发生一行:

代码语言:javascript
运行
复制
WITH test_data (str, pattern) AS 
(
SELECT 'P348955: REMOVE NHA P210 PANEL PN : 6703ELM21 & 
REMOVE SUB ASSY PN: ELM2000-10-10 (ITEM 70) QTY 2EA & PN: ELM200-11-10 
OR ALT (ITEM 75) QTY 1EA & PN ELM1057-1 QTY 1EA REQUESTED BY MMEECHAN 
REF ID 7369'
,'PN\s*:?\s*(\w|-)*'
FROM DUAL
)
SELECT regexp_substr(str,pattern,1,level,'im' ) FROM test_data
CONNECT BY regexp_substr(str,pattern,1,level,'im' ) IS NOT NULL;

PN : 6703ELM21
PN: ELM2000-10-10
PN: ELM200-11-10
PN ELM1057-1
票数 0
EN

Stack Overflow用户

发布于 2020-07-01 14:35:17

另一种选择:

代码语言:javascript
运行
复制
SELECT substr
FROM (
    SELECT REGEXP_SUBSTR(str, 'PN(\s|\:)+(\d|\w)+?[^ ]+', 1, LEVEL) AS substr
    FROM (
        SELECT 'P348955: REMOVE NHA P210 PANEL PN : 6703ELM21 and REMOVE SUB ASSY PN: ELM2000-10-10 (ITEM 70) QTY 2EA and PN: ELM200-11-10 OR ALT (ITEM 75) QTY 1EA snd PN ELM1057-1 QTY 1EA REQUESTED BY MMEECHAN REF ID 7369' AS str
        FROM DUAL
    )
    CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(str, 'PN(\s|\:)+(\d|\w)+?[^ ]+')) + 1
)
WHERE substr is not null;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62665143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档