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 必须是字符串文字。
您将需要sql:variable() XQuery 扩展函数来引用变量。此函数(引用自链接)“公开了一个包含 XQuery 表达式内的 SQL 关系值的变量”。
Select @xml.query('/row[Id=sql:variable("@ID")]');
Run Code Online (Sandbox Code Playgroud)