如何更好地提取以下内容:
我在列中有以下值:
\\v8pip1\90PI-200009-10.PV
我需要在下面,\\ v8pip1 \对于所有行都是相同的:
90PI-200009-10.PV
感谢, 小号
答案 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到字符串的末尾。