我有一个像
这样的字符串值的列"BY *MAN MOBILE*0112305V7 - JAIPUR "
我需要在*和 - 之间编写代码
示例0112305V7
。有人可以帮我解决这个问题
答案 0 :(得分:1)
也许像regexp这样的东西:
select regexp_substr('BY *MAN MOBILE*0112305V7 - JAIPUR ','[[:digit:]]{3,}[[:alnum:]]{3,}') from dual;
答案 1 :(得分:0)
尝试此操作(将str
替换为您的列名称):
SELECT SUBSTR(str, INSTR(str, '*', 2) + 1, INSTR(str, '-') - INSTR(str, '*', 2) - 1)
注意:这仅适用于您的字符串包含__*__*XXXX-____
答案 2 :(得分:0)
假设在'*'
次出现后,您的字符串始终有两个' - '
和一个'*'
,以获取第二个'*'
和{{1}之间的值},你可以使用:
' - '
这给出了一个非常自我解释的结果:
select substr(str, instr(str, '*', 1, 2)+1, instr(str, ' - ') - instr(str, '*', 1, 2) -1) as theNeededString,
instr(str, '*', 1, 2) as theSecondStar,
instr(str, ' - ') - instr(str, '*', 1, 2)-1 as lengthOfTheNeededString
from ( select 'BY *MAN MOBILE*0112305V7 - JAIPUR ' str from dual)