xml - 在 SQL 中搜索 XML 列

标签 xml oracle select

© 有一个 XML 文档来存储 Oracle 数据库中的记录。

CourseXML 表将包含:

Record_Number  int
XML_Type       int
XMLDoc         clob
...etc

© 想要通过 XML 标记在 XMLDoc 列中进行搜索。 XML 文档具有如下 XML 模式:

<root>
  <UnitID="2" Name="Jerry" SName="Potter"/>
  <UnitID="3" Name="Jim" SName="Carelyn"/>
</root>

© 想在 UnitID="2"中进行搜索,我只想要 Jerry 的 xml 行。我必须如何进行 select 语句查询才能获取该 xml 行?

最佳答案

您可能需要使用节点位来获得准确的结果。

SELECT
    y.item.value('@UnitID', 'int') AS UnitID,
    y.item.value('@Name', 'varchar(100)') AS [Name],
    y.item.value('@SName', 'varchar(100)') AS [SName]
FROM
    <table>
    CROSS APPLY
    XMLDoc.nodes('/root') AS y(item)
WHERE
    y.item.value('@UnitID', 'int') = 2

编辑:更正代码以使用表,而不是 xml 局部变量

关于xml - 在 SQL 中搜索 XML 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/697256/

相关文章:

sql - Oracle:是否可以根据列值选择连接哪个表?

oracle - IF NOT EXISTS 在函数 PLSQL 中

PHP MySQL 选择语句错误

mysql - 隐藏数据库查询中的第一行

android - 如何计算布局中的 View 数量

mysql - 将 XML 导入 MySql - 警告代码=1263

sql - 计算 SQL 或 Pandas 中 GROUP BY 后的类别数

mysql - 比较同一列同一表中的值

C# 查找和替换 XML 节点

html - 将最后一个空间从混合内容节点移动到外部节点