我需要从Oracle表中的单元格的值中提取字符串。我怎样才能做到这一点?Oracle:使用REGEXP_LIKE的SQL
VALUE
--------
/var1/var2/var3/C751994ZP1QT11/var4.itp
我想从使用SQL的值中提取“C751994ZP1QT11”。我搜索了一些像REGEXP_LIKE这样的函数,但我不太明白如何使用它。
非常感谢您的帮助。
我需要从Oracle表中的单元格的值中提取字符串。我怎样才能做到这一点?Oracle:使用REGEXP_LIKE的SQL
VALUE
--------
/var1/var2/var3/C751994ZP1QT11/var4.itp
我想从使用SQL的值中提取“C751994ZP1QT11”。我搜索了一些像REGEXP_LIKE这样的函数,但我不太明白如何使用它。
非常感谢您的帮助。
如果你想提取一个字符串,你需要使用regexp_substr()
。 regexp_like()
会返回一个布尔值,指示某个正则表达式是否与您的字符串匹配,而regexp_substr()
实际上会返回匹配的字符串。
在你的情况,假设你要/**
和**/
之间的字符串,你可以使用这样的事情:
select
regexp_substr(
'/var1/var2/var3/**C751994ZP1QT11**/var4.itp',
'/\*\*.*\*\*/')
from dual
参考here上与Oracle正则表达式一些有用的快捷键。
select REGEXP_REPLACE('/var1/var2/var3/**C751994ZP1QT11**/var4.itp','.*\*\*(.*)\*\*.*','\1') result from dual
谢谢所有的答案,:)只是犯了一个错误,没有**之间。请参阅上面的更正。 – Ianthe
那么标准是什么?你想要第三个文件夹名称吗?你想要文件名前的最后一个文件夹名?现有的答案显示如何提取字符串,所以你应该能够弄清楚。但是,如果你不能,没有人能告诉你如何,除非你对你的要求更具体。 – dbenham