在SQL中使用Substr和instr

时间:2016-09-09 06:55:46

标签: sql oracle

我正在尝试从记录中提取字符串的中间部分。我想获得字符串中唯一的中间部分。

select instr('WUK00000105376:WUKE03960761:WUKR0093868603',':') 
from dual;

我想从此字符串中仅获取WUKE03960761

我尝试过使用sustring和instring来获取输出,但我没有得到。

2 个答案:

答案 0 :(得分:3)

SELECT SUBSTR(col,
              INSTR(col, ':') + 1,
              INSTR(col, ':', 1, 2) - INSTR(col, ':') - 1)
FROM dual

答案 1 :(得分:1)

另一个选择是使用regexp_substring()来获取两个冒号之间的字符串:

select regexp_substr('WUK00000105376:WUKE03960761:WUKR0093868603',':[A-Z0-9]+:') 
from dual;

然而,这也会返回冒号,但您也可以告诉regexp_substr()从正则表达式返回特定的组:

select regexp_substr('WUK00000105376:WUKE03960761:WUKR0093868603',':([A-Z0-9]+):',1,1,'i',1) 
from dual;

但蒂姆使用substr和instr的解决方案很可能会快得多。