REGEXP_LIKE匹配不像特定字符串的xml标记内容

时间:2017-06-14 08:29:16

标签: regex xml plsql

我正在尝试与REGEXP_LIKE进行正则表达式匹配,我正在寻找一个正则表达式来查找特定标记的值是否不是特定字符串。 例如:

<person>
   <name>John</name>
   <age>40</age>
</person>

我的目标是验证name标签的值不是John,因此对于输入xmls,REGEXP_LIKE将返回true,其中name不是John。 提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

快速简便的方法是简单地否定正则表达式搜索:

... WHERE NOT REGEXP_LIKE('column_name', '<name>John</name>')

但是,每次发布这样的问题时都应该提到,通常是a bad idea to parse XML with regex。如果您发现自己构建了更复杂的正则表达式模式来搜索此XML数据,那么您应该:

  • 使用an XML parser代替正则表达式,或
  • 更改存储数据的方式!将person.age设为单独的表格列;不要将整个XML结构打包到一个地方。