xml - 在 SQL Server 2008 中使用 XQuery 搜索内容

标签 xml sql-server-2008 xquery

以以下 4 个示例 XML 文档为例:

  1. <例子> <颜色>橙色

  2. <示例> <汽车 colour="orange">福特 焦点

  3. <例子> Orange 县

  4. <示例> <橙色>555

这些都存储在具有 XML 数据类型列(未类型化)的表中的 SQL Server 数据库中。

我将如何运行查询来查找文档中包含单词 orange 的所有内容,这将返回以下文档:

  1. 这在元素中有一个值 orange。
  2. 这在属性中有一个值 orange。
  3. 这在元素中有一个值 Orange County(注意 Orange 一词的不同大小写)

文档 4 不应在查询结果中返回,因为单词 orange 是元素名称而不是数据值。

这可能吗?

提前致谢。

最佳答案

我认为您无法在单个查询中完成此操作 - 但是,通过两个查询,您应该会获得所需的结果:

  1. 首先查询以获取包含看起来像“橙色”的文本(在元素内)的所有 XML 节点:

    SELECT * FROM dbo.XQueryTest
    WHERE XmlContent.value('(//*/text())[1]', 'varchar(50)') LIKE '%orange%'
    
  2. 第二个查询执行相同的操作,但基于属性值:

    SELECT * FROM dbo.XQueryTest
    WHERE XmlContent.value('(//*/@*)[1]', 'varchar(50)') LIKE '%orange%'
    

查询 1 只是获取所有 XML 节点的 text() 的值作为字符串 (varchar(50)) 并根据常规 SQL 语法将其与'%orange%'。

查询编号2 获取所有属性值 (/@*) 并执行相同的操作。

当然,如果确实需要,您可以UNION将这两者结合在一起。

希望这对您有所帮助!

关于xml - 在 SQL Server 2008 中使用 XQuery 搜索内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2269795/

相关文章:

xquery 自动换行

python - 如何在使用 Python/ElementTree 解析 XML 时保留注释

sql-server - 我可以从 SQL Server 读取元数据以了解最后更改的行/表吗?

sql - 在 SQL 中指定最小连接点数量

sql-server-2008 - SQL Server 2008 使用 UDF 更新 VarChar 列?

xquery - 如何检查xml中的属性可用性?

sql - XQuery 存在检查选择 sql 查询

sql-server - 在 SQL Server 中使用 XQuery 返回重复项

xml - Zillow API 一般搜索

java - 为什么 xalan 不会针对格式错误的 XML 抛出 TransformException 错误