我正在尝试使用Sql Server中的XPath选择以下xml文档的Lookup.Result元素的文本节点。
<Commands>
<Command id="1">
<Lookup.Result>Result.OK</Lookup.Result>
</Command>
</Commands>
我尝试以下查询:
declare @xml xml
set @xml = '<Commands>
<Command id="1">
<Lookup.Result>Result.OK</Lookup.Result>
</Command>
</Commands>
'
select t.c.value('./Lookup.Result/text()[1]', 'varchar(20)')
from @xml.nodes('/Commands/Command') t(c)
但是我收到以下错误: XQuery [value()]:'Lookup'附近的语法错误
我怎么逃避(在XP中使用Lookup.Result元素标记名称中的点)? 请帮助找到解决此问题的优雅方案。 提前感谢您的时间。
答案 0 :(得分:3)
declare @xml xml
set @xml = '<Commands>
<Command id="1">
<Lookup.Result>Result.OK</Lookup.Result>
</Command>
</Commands> '
select t.c.value('(./Lookup.Result/text())[1]', 'varchar(20)')
from @xml.nodes('/Commands/Command') t(c)
你错过了
()
围绕上面的xpath,MSSQL处理。在我的机器上很好
答案 1 :(得分:0)
那么只有5个逃脱字符:
" "
' '
< <
> >
& &
所以你需要一个函数来预处理然后另一个函数来发布进程。即在udf ...
中包装5个嵌套的REPLACE语句