regex - 如何在oracle中提取字符串的特定部分?

标签 regex oracle oracle11g oracle10g oracle-sqldeveloper

我有一些列名称为“text_note”的记录。现在我需要找出哪个 text_note 包含类似 %CTOE0% 的字符串。

我认为可以使用正则表达式来完成,但因为我不太熟悉 使用正则表达式,我无法为其创建正则表达式。

请帮忙。
忘记提及 我想要不同 COULMN 中的代码(CTOE)部分

我的问题是我只是不想在下一栏中显示“CTOE”。我想知道使用了什么代码。可以使用的代码类型有 CTOE01、CTOE02、CTOE03 等等。现在我想知道使用了哪些代码。

示例如下:如果文本不包含“dsghdsCTOE01dbhf”,则新列应包含“CTOE01”;如果文本不包含“dsCTOE02dbhf”,则新列应包含“CTOE02” –

最佳答案

我会使用 regexp_substr 来实现:

CREATE TABLE t (text_note VARCHAR2(30));
INSERT INTO t VALUES ('dsghdsCTOE01dbhf');
INSERT INTO t VALUES ('dsCTOE02dbhf');
INSERT INTO t VALUES ('soemthingelse');

SELECT text_note, 
       regexp_substr(text_note, 'CTOE[0-9]+') AS code 
  FROM t
 WHERE   regexp_like(text_note, 'CTOE[0-9]+');


text_note         code
----------------  ----
dsghdsCTOE01dbhf  CTOE01
dsCTOE02dbhf      CTOE02

regexp_substr 提取新列,regexp_like 过滤包含 CTOE... 的行。

关于regex - 如何在oracle中提取字符串的特定部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24884556/

相关文章:

regex - 在 Linux 中,名称与正则表达式匹配的文件的磁盘使用情况?

c - 在 pro *C 中用早 1 分钟的时间更新日期时间字段

MySQL : Storing business logic in table

mysql - 仅允许通过特定应用程序连接 DBMS 用户

excel - 确定化学式中的原子总数

regex - 而不是搜索模式

sql - 为什么oracle不忽略直接路径插入的引用完整性约束

plsql - PL/SQL Oracle 存储过程(未找到数据)

sql - 如何在 hibernate 中使用listagg

regex - 移动以编号开头且类型为 pdf 的文件