oracle使用正则表达式REGEXP

03-03 阅读 0评论

使用extract(XMLTYPE(XML), ‘xphat’).getstringval()提取XML,长度过长存在报错

oracle使用正则表达式REGEXP,oracle使用正则表达式REGEXP,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,错误,名称,第1张
(图片来源网络,侵删)

ORA-06502: PL/SQL: 数字或值错误 : character string buffer too small

ORA-06512: 在 “SYS.XMLTYPE”, line 169

并且存在速度较慢等问题。

正则提取XML,由于这边的XML文本中Name标签,接着的标签即为Value的值,故这样去写。其它的格式需要改正则表达式。

其中

([0-9]+(\.[0-9]{1,2})?)

为数字提取。

oracle使用正则表达式REGEXP,oracle使用正则表达式REGEXP,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,错误,名称,第2张
(图片来源网络,侵删)
Result :=SUBSTR(re, 1, 4000);
Result :=substrb(Result,1,4000);

为截取4000长度的字符串。

create or replace function pyzyyhis6.mc_fn_reg_xml(reg_xml in clob,reg_name in varchar2,reg_re varchar2) return varchar2 is
  Result varchar2(20000); 
  re clob;
begin
--正则提取xml
--reg_xml   clob  传入的xml
--reg_name   varchar2 传入的节点名称
--reg_re varchar2  返回数值的正则规则(数字传"[0-9]+(\.[0-9]{1,2})?"之类的,否则传 [^]+)
--作者:ltd
  IF reg_re='1' then  --数字
    re := REGEXP_SUBSTR(reg_xml, '('||reg_name||')([0-9]+(\.[0-9]{1,2})?)',1,1,'c',2);
  ELSIF  reg_re='0' then --正常数值
    re := REGEXP_SUBSTR(reg_xml, '('||reg_name||')([^]+)',1,1,'c',2);
  else 
    re := REGEXP_SUBSTR(reg_xml, '('||reg_name||')('||reg_re||')',1,1,'c',2);
  end if;
   Result :=SUBSTR(re, 1, 4000);
   Result :=substrb(Result,1,4000);
  return Result;
end;
oracle使用正则表达式REGEXP,oracle使用正则表达式REGEXP,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,错误,名称,第3张
(图片来源网络,侵删)

免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]