当前位置: 代码迷 >> Oracle开发 >> 在oracle里如何从一段string里,截取如上的2段string
  详细解决方案

在oracle里如何从一段string里,截取如上的2段string

热度:32   发布时间:2016-04-24 07:22:06.0
在oracle里怎么从一段string里,截取如下的2段string?
字符串如下

U#:aaaaaaaaaaaaaa#:AUDIT#:2#:0#:0#:0#:#:#:#:#;U#:bbbbbbbbbbbbb#:AUDIT#:2#:0#:0#:0#:#:#:#:#;

我想截取到aaaaaaaaaaaaaa和bbbbbbbbbbbbb,都是以U#:开头和#:结尾的

------解决方案--------------------
SELECT regexp_replace('U#:aaaaaaaaaaaaaa#:AUDIT#:2#:0#:0#:0#:#:#:#:#;U#:bbbbbbbbbbbbb#:AUDIT#:2#:0#:0#:0#:#:#:#:#;','[^U#:a-z#:]+|U#:|#:|#','') AS STR
FROM dual

STR
----------------------------- 
aaaaaaaaaaaaaaUbbbbbbbbbbbbbU 

剩下的事情,自己解决吧
------解决方案--------------------
正则表达式,
[^U#:a-z#:]+|U#:|#:|#
分两段解释
[^U#:a-z#:]+
--解释:[U#:a-z#:]表示U#:开头,#:结尾,中间为小字英文字符
--'+' 匹配前面的子表达式一次或多次。
--'^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。
|U#:|#:|#
--解释:'|' 指明两项之间的一个选择。
  相关解决方案