从列中提取特定值

时间:2017-03-30 09:15:45

标签: sql oracle oracle11g

如何更好地提取以下内容:

我在列中有以下值:

\\v8pip1\90PI-200009-10.PV

我需要在下面,\\ v8pip1 \对于所有行都是相同的:

 90PI-200009-10.PV

感谢, 小号

3 个答案:

答案 0 :(得分:2)

我认为你可以使用(以下只是一个例子):

SELECT replace('\\v8pip1\90PI-200009-10.PV','\\v8pip1\','') FROM DUAL;

输出:

90PI-200009-10.PV

答案 1 :(得分:0)

试试regexp_replace。这将考虑第二个单反斜杠后的字符串作为第二组并返回它。

select regexp_replace
(col1,
  '^\\{2}(\w*)\\(.*)',
    '\2')
from  (
select '\\v8pip1\90PI-200009-10.PV' as col1 from dual union all 
select '\\first\second string' from dual )

输出

90PI-200009-10.PV
second string

答案 2 :(得分:0)

对于仅使用标准字符串函数的更通用的解决方案:

select substr(input_string, instr(input_string, '\', -1) + 1) as new_string
from   ...

说明显而易见的是,input_string是输入字符串。 INSTR在输入字符串中找到最后一次出现'\'的位置(这是减号在最后一个参数中的含义,-1)。然后SUBSTR从该位置读取+ 1到字符串的末尾。