日期:2014-05-17  浏览次数:20954 次

在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#:|#:|#
--解释:'|' 指明两项之间的一个选择。