【问题标题】:Query xml in SQL Server - escaping square brackets在 SQL Server 中查询 xml - 转义方括号
【发布时间】:2015-05-11 16:18:18
【问题描述】:

我正在尝试在 SQL Server 中查询 XML,但由于我的数据包含 [] 而出现错误。

我的 XML 格式(第三方,所以我无法更改此格式并去掉方括号):

<MyRootElement>
    <MyChildElement name="[Name1]"><MyChildElement>
    <MyChildElement name="[Name2]"><MyChildElement>
    <MyChildElement name="[Name3]"><MyChildElement>
</MyRootElement>

我想获取 xml 包含具有特定名称的 MyChildElement 的所有记录。

我试过了:

SELECT * 
FROM MyTable
WHERE MyXmlColumn.exist(N'/MyRootElement/MyRootElement[@name=[Name2]]') = 1

SQL 错误信息:

XQuery 无效的源字符:[

如果我转义 [Name](=&amp;#91;Name1&amp;#93;) 的方括号,那么它会抱怨 &amp;

那么我怎样才能使这个查询工作呢?

有没有更好的办法?

【问题讨论】:

    标签: sql-server xml xpath escaping


    【解决方案1】:

    文字字符串应该用双引号括起来,这种情况不需要转义:

    SELECT * 
    FROM MyTable
    WHERE MyXmlColumn.exist(N'/MyRootElement/MyChildElement[@name="[Name2]"]') = 1
    

    【讨论】:

      猜你喜欢
      • 2018-01-06
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-07
      相关资源
      最近更新 更多