XML 数据类型方法“query”的参数 1 必须是字符串文字

Om *_*pta 2 t-sql sql-server sql-server-2008

我在 SQL Server 中有 xml 格式的数据。现在我试图根据我的查询找出单个记录。我把我的代码放在下面,

declare @xml xml
declare @ID varchar
set @ID = '1'
set @xml = '
<row>
    <Id>1</Id>
    <name>OM</name>
</row>
<row>
    <Id>2</Id>
    <name>JAI</name>
</row>
<row>
    <Id>2</Id>
    <name>JAGDISH</name>
</row>
'
Run Code Online (Sandbox Code Playgroud)

当我执行我的查询时,它会给我一个正确的结果(xml 节点):

Select @xml.query('/row[Id="1"]');
Run Code Online (Sandbox Code Playgroud)

但是当我连接 @ID 进行查询时,它给了我一个错误:

Select @xml.query('/row[Id='+ @ID +']');
Run Code Online (Sandbox Code Playgroud)

错误是:

XML 数据类型方法“query”的参数 1 必须是字符串文字。

TT.*_*TT. 5

您将需要sql:variable() XQuery 扩展函数来引用变量。此函数(引用自链接)“公开了一个包含 XQuery 表达式内的 SQL 关系值的变量”。

Select @xml.query('/row[Id=sql:variable("@ID")]');
Run Code Online (Sandbox Code Playgroud)