提取=和之间的字符串,

时间:2019-01-04 10:09:04

标签: sql oracle

给出以下字符串

DEA=R,SL=R,CLIA=O,JCAHO=O

我必须提取=,之间的字符串

我需要R,R,O,O

请向我建议该查询。

3 个答案:

答案 0 :(得分:2)

使用正则表达式执行此操作。

假设您的字符串来自表col1的列t1 ...

select regexp_replace(col1 
                       , '([A-Z]+)=([A-Z],?)'
                       , '\2' ) as extr_str
from t1;

此解决方案与发布字符串的格式紧密相关:一系列字母,等号,单个字母(可选)和逗号。您将需要调整搜索模式以反映实际数据中的变化。

答案 1 :(得分:0)

最简单的方法应如下所示,其中REGEXP_REPLACE(...)表示=之前的所有那些字符和任意数量的(Alphabets AZ)都将它们替换为空白,以提供所需的输出

 select  REGEXP_REPLACE(
          'DEA=R,SL=R,CLIA=O,JCAHO=O','[A-Z]*=','')
             from dual;

enter image description here

答案 2 :(得分:0)

使用Oracle正则表达式

REGEXP_REPLACE( value, '\w+=', '' );

此正则表达式将删除等号左侧的单词。它比其他所有答案都简单,并且效果也一样。