在SQL Server中查询xml - 转义方括号

时间:2015-05-11 16:18:18

标签: sql-server xml xpath escaping

我正在尝试在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](= &#91;Name1&#93;)的方括号,则会抱怨&

那我怎样才能使这个查询有用呢?

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

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

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