oracle中使用regexp_substr取值。(最好用正则)

假如我有一个表tableA中有一个列A中的值为<a1="a13322"a2="23423432c"a3="22331dd"/>,下一行又可能是这样<a1="sdfa234... 假如我有一个表tableA 中有一个列A中的值为 < a1="a13322" a2="23423432c" a3="22331dd" />, 下一行又可能是这样 < a1="sdfa234" a2="sfsdfs2" a4="sdfsd2" />在下一行可能是这样< a2="23123123sdf" a3="sdfsd" />还有这样的< a2="sdfsdf23" a4="331231" /> 这样的< a1="22223" a3="234234" /> 还有这样的< a1="1sdf2" a2="" a3="31231sd" />
总之现在就是想获得 a2中双引号之间的值,也就是通过regexp_substr来截取,截取规则是a2="和离a2=“举例最近的一个" 求大神指点迷津,注意 有时候可能没有a2,有时候可能a2=”和" 中没有值。
求指教,,,
求大神们在来围观!!!!
展开
 我来答
scola4761836
推荐于2016-02-02 · 超过25用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:44.6万
展开全部
select regexp_substr(regexp_substr('<a1="a1111" a2="b22222" a3="a33333"/>','a2=".*"'),'\w+',1,2) from dual
结果:b22222,如无a2时,值null
追问
select regexp_substr(regexp_substr('','a2=".*"'),'\w+',1,2) from dual
当a2=""时 结果为a3 求继续优化。
追答
select regexp_substr(substr(regexp_substr('','(a2=".*" )|(a2=".*"/)'),5),'[[:alnum:]]+') from dual
结果:b2222,如无a2时,值null,如a2=“”时,值为null
select regexp_replace(regexp_substr('','(a2=".*" )|(a2=".*"/)'),'(a2=")|"','') from dual
结果:b2222,如无a2时,值null,如a2=“”时,值为""
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式