首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Oracle中使用regexp_like来使用一系列值来匹配多个字符串条件

在Oracle中使用regexp_like来使用一系列值来匹配多个字符串条件
EN

Stack Overflow用户
提问于 2021-04-20 10:38:34
回答 2查看 1.3K关注 0票数 0

我的Oracle DB中有一个包含代码的字段,从这个字段中,我需要使用一系列的值来提取多个值。

例如,我需要提取范围C00.0 - C39.9中的所有代码,即以C开头,第二个字符可以是0-3,第三个字符是0-9,后面跟着一个“”。最后一个数字是0-9。

代码语言:javascript
复制
CODES
-----
C00.0
C10.4
C15.8
C39.8

上面的例子是对于一个模式,我有多个模式要匹配,下面是另一个例子

代码语言:javascript
复制
C50.011-C69.92

再次,以C开头,第二个字符是5-6,第三个字符是0-9,第四个字符是“。”,第五个字符是0-9,第六个字符是1-2等等。

我尝试了以下方法,但是我的管道函数似乎没有获得第二个条件,因此我只得到了第一个条件'^[C][0-3][0-9][.][0-9]'的结果

代码语言:javascript
复制
SELECT DISTINCT CODES
FROM
TABLE
WHERE REGEXP_LIKE (CODES,   '^[C][0-3][0-9][.][0-9]|
                             ^[C][4][0-3][.][0-9]|
                             ^[C][4][A][.][0-9]|
                             ^[C][4][4-9][.][0-9]|
                             ^[C][4][9][.][A][0-9]|
                             ^[C][5-6][0-9][.][0-9][1-9]|
                             ^[C][7][0-5][.][0-9]|
                             ^[C][7][A-B][.][0-8]')
ORDER BY CODES

如果有人能就我如何拉出更多的图案提出建议,我将非常感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-20 10:41:01

你的模式中有新的行--换句话说,你对可读性的尝试是造成问题的原因。您可以直接删除它们,尽管我可能会列出常见的元素:

代码语言:javascript
复制
WHERE REGEXP_LIKE (CODES, '^[C]([0-3][0-9][.][0-9]|[4][0-3][.][0-9]|[4][A][.][0-9]|[4][4-9][.][0-9]|[4][9][.][A][0-9]|[5-6][0-9][.][0-9][1-9]|[7][0-5][.][0-9]|[7][A-B][.][0-8])')

我想你也希望$在最后。

如果您想要可读性,可以使用or

代码语言:javascript
复制
SELECT DISTINCT CODES
FROM TABLE
WHERE REGEXP_LIKE (CODES, '^[C][0-3][0-9][.][0-9]') OR
      REGEXP_LIKE (CODES, '^[C][4][0-3][.][0-9]|') OR
      . . . 
票数 1
EN

Stack Overflow用户

发布于 2021-04-20 10:44:26

这里是您想要匹配的正则表达式模式:

代码语言:javascript
复制
^C[0-3][0-9][.][0-9]$

Demo

这将与C00.0 - C39.9的范围相匹配。如果要匹配其他范围,则需要与另一种模式进行交替,以覆盖这些范围。

将此应用于当前查询:

代码语言:javascript
复制
SELECT DISTINCT CODES
FROM yourTable
WHERE REGEXP_LIKE (CODES, '^C[0-3][0-9][.][0-9]$');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67177260

复制
相关文章

相似问题

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