DB2SQL中的正则表达式

DB2SQL中的正则表达式,sql,regex,db2,Sql,Regex,Db2,(除了使用UDF)DB2 9.7的SQL支持中是否有任何REGEXP?DB2 9.7中没有对正则表达式的内置支持 唯一的方法是使用UDF或表函数,如注释中添加的“OMG Ponies”一文中所述 @dan1111:我不喜欢我的帖子被编辑,尤其是当人们不能正确阅读问题时。OP询问了对DB29.7的-SQL支持中的任何REGEXP SQL不是XQuery 对不起,不要删除我100%正确答案的文本。你可以添加评论或写自己的答案。我是komikoni(Keisuke Konishi) 我创建了db2中不

(除了使用UDF)DB2 9.7的SQL支持中是否有任何REGEXP?

DB2 9.7中没有对正则表达式的内置支持

唯一的方法是使用UDF或表函数,如注释中添加的“OMG Ponies”一文中所述

@dan1111:我不喜欢我的帖子被编辑,尤其是当人们不能正确阅读问题时。OP询问了对DB29.7的-SQL支持中的任何REGEXP

SQL不是XQuery

对不起,不要删除我100%正确答案的文本。你可以添加评论或写自己的答案。

我是komikoni(Keisuke Konishi)

我创建了db2中不存在的正则表达式函数(UDF)。 使用SQL/XML(Xquery)的UDF。 您可以轻松安装

正则表达式列表提供自定义项

  • REG\u匹配 提供重合存在(标量)
  • REG\u替换 字符串替换(标量)
  • 注册计数 检索到的匹配数(标量)
  • 注册位置 匹配位置采集(标量)
  • REG\u SUBSTR 获取匹配的字符串(标量)
  • 注册表子表 匹配字符串信息列表(表)
  • REG\u标记化表 不匹配字符串信息列表(除以分隔符字符串)(表)
  • REG\u ALLTOKEN\u表格 不匹配字符串和匹配字符串信息列表(表)
  • 脚本可以从这里下载。 (抱歉用日语说)

    (英文:脚本:日语页面的最后一页)


    我期待您的反馈和评论。

    真正的答案是,DB2确实支持正则表达式,因为PureXML是通过带有matches函数的xQuery添加的(包括v9.7)

    例如:

    db2 "with val as (
     select t.text
     from texts t
     where xmlcast(xmlquery('fn:matches(\$TEXT,''^[A-Za-z 0-9]*$'')') as integer) = 0
    )
    select * from val"
    
    有关更多信息:


    除了DB2z/OS之外,它工作得很好-在DB2V10z/OS中,必须按如下方式使用传递

       with val as (
         select t.text
         from texts t
         where xmlcast(xmlquery('fn:matches($v,"^[A-Za-z 0-9]*$")'
                        PASSING t.text as "v" ) as integer) = 0
        )
        select * from val
    

    从DB211.1开始,有内置的正则表达式支持。新功能之一是,还有更多功能

    SELECT REGEXP_SUBSTR('hello to you', '.o',1,1) 
       FROM sysibm.sysdummy1
    

    事实并非如此。正则表达式在DB29.7中通过带有matches函数的xQuery得到支持:@TannerFaulkner it’s about time.;-)IBM在添加显而易见的东西时总是迟到。