sql - 在 PostgreSQL 的 where 子句中使用 XML 列

标签 sql xml oracle postgresql hibernate

我想在某些数据库的 hibernate 中支持包含 XML 内容的列的 where 子句。我通过扩展 org.hibernate.dialect.OracleDialect 类并通过 registerFunction 方法注册 xml 函数,在 Oracle 中实现了这一点。生成的查询示例:

SELECT *
FROM OM_PERSON this_
WHERE xmltype.createxml(this_.config_xml).existsNode('/*[condition/text()="19943"]')=1;

hibernate中注册的函数(对于Oracle):

xmltype.createxml(?1).existsNode(?2)

现在我也想支持PostgreSQL(首选版本:9.6),但我找不到任何等效的功能。所以我的问题是在 PostgreSQL 中是否有与上述 Oracle 查询等效的函数/语句?

最佳答案

PostgreSQL 有一个函数 XMLEXISTS ,因此您的查询可以如下所示:

SELECT *
   FROM OM_PERSON x
  WHERE XMLEXISTS('/*[condition/text()="19943"]' PASSING x.config_xml)

我不知道如何在 Hibernate 中使用它。

关于sql - 在 PostgreSQL 的 where 子句中使用 XML 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47364320/

相关文章:

mysql - 找不到mySQL请求错误

Android TabWidget 不同标签的不同xml文件

java - jdbc : oracle database change notification & duplicate events

sql - Oracle SQL (Oracle 11g) 中的排名优于分区依据

php - 将文件路径保存到数据库/SQL

sql - 查询

php - 使用 php 和 sql 创建一个下拉列表,根据之前的选择给出值

xml - 尝试为 Android 扩展 XML 布局时出现 Eclipse ClassCastException

Android:使用背景png图像

c# - 使用 Oracle.DataAccess (ODAC) 在 C# 中进行异步调用