首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

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

2012-09-22 
在oracle里怎么从一段string里,截取如下的2段string?字符串如下U#:aaaaaaaaaaaaaa#:AUDIT#:2#:0#:0#: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#:|#:|#
--解释:'|' 指明两项之间的一个选择。

热点排行