【发布时间】:2021-07-14 13:13:54
【问题描述】:
我的 Oracle DB 中有一个包含代码的字段,我需要使用一系列值从中提取多个值。
例如,我需要提取C00.0 - C39.9 范围内的所有代码,即以 C 开头,第二个字符可以是 0-3,第三个字符是 0-9,后跟一个“。”然后最后一个数字是 0-9 例如
CODES
-----
C00.0
C10.4
C15.8
C39.8
上面的例子是一个模式,我有多个模式要匹配,这里是另一个例子
C50.011-C69.92
同样,以 C 开头,第二个字符是 5-6,第三个是 0-9,第四个是“.”,第五个是 0-9,第六个是 1-2 等等。
我尝试了以下方法,但我的管道函数似乎没有接受第二个条件,因此我只得到第一个条件的结果'^[C][0-3][0-9][.][0-9]':
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
如果有人能就如何提取其他模式提出建议,我将不胜感激。
【问题讨论】:
标签: sql oracle regexp-like