2012-08-29 50 views
0

我需要从Oracle表中的单元格的值中提取字符串。我怎样才能做到这一点?Oracle:使用REGEXP_LIKE的SQL

VALUE 
-------- 
/var1/var2/var3/C751994ZP1QT11/var4.itp 

我想从使用SQL的值中提取“C751994ZP1QT11”。我搜索了一些像REGEXP_LIKE这样的函数,但我不太明白如何使用它。

非常感谢您的帮助。

+0

谢谢所有的答案,:)只是犯了一个错误,没有**之间。请参阅上面的更正。 – Ianthe

+0

那么标准是什么?你想要第三个文件夹名称吗?你想要文件名前的最后一个文件夹名?现有的答案显示如何提取字符串,所以你应该能够弄清楚。但是,如果你不能,没有人能告诉你如何,除非你对你的要求更具体。 – dbenham

回答

1

如果你想提取一个字符串,你需要使用regexp_substr()regexp_like()会返回一个布尔值,指示某个正则表达式是否与您的字符串匹配,而regexp_substr()实际上会返回匹配的字符串。

在你的情况,假设你要/****/之间的字符串,你可以使用这样的事情:

select 
    regexp_substr(
    '/var1/var2/var3/**C751994ZP1QT11**/var4.itp', 
    '/\*\*.*\*\*/') 
from dual 

参考here上与Oracle正则表达式一些有用的快捷键。

0
select REGEXP_REPLACE('/var1/var2/var3/**C751994ZP1QT11**/var4.itp','.*\*\*(.*)\*\*.*','\1') result from dual