我正在尝试从记录中提取字符串的中间部分。我想获得字符串中唯一的中间部分。
select instr('WUK00000105376:WUKE03960761:WUKR0093868603',':')
from dual;
我想从此字符串中仅获取WUKE03960761
。
我尝试过使用sustring和instring来获取输出,但我没有得到。
答案 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的解决方案很可能会快得多。