我正在尝试在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]
(= [Name1]
)的方括号,则会抱怨&
那我怎样才能使这个查询有用呢?
有更好的方法吗?
答案 0 :(得分:1)
文字字符串应该是双引号,这种情况不需要转义:
SELECT *
FROM MyTable
WHERE MyXmlColumn.exist(N'/MyRootElement/MyChildElement[@name="[Name2]"]') = 1