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=”和" 中没有值。
求指教,,,
求大神们在来围观!!!! 展开
总之现在就是想获得 a2中双引号之间的值,也就是通过regexp_substr来截取,截取规则是a2="和离a2=“举例最近的一个" 求大神指点迷津,注意 有时候可能没有a2,有时候可能a2=”和" 中没有值。
求指教,,,
求大神们在来围观!!!! 展开
展开全部
select regexp_substr(regexp_substr('<a1="a1111" a2="b22222" a3="a33333"/>','a2=".*"'),'\w+',1,2) from dual
结果:b22222,如无a2时,值null
结果: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=“”时,值为""
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询