XML数据类型方法"value"必须是字符串文字

non*_*ana 9 xml sql t-sql sqlxml

如何更改我的查询,以便不会发生此错误:

XML数据类型方法"value"必须是字符串文字

T-SQL代码:

Declare @Count Int = 1 
While(@count <= @j) 
Begin 
insert into mytable 
([Word]) 
Select ([XmlColumn].value(N'word['+Cast(@Count as nvarchar(2))+']/@Entry','nvarchar(max)')) 
    from OtherTable WHERE ID=2
Run Code Online (Sandbox Code Playgroud)

Gar*_*thD 14

对于value方法,不能以这种方式将变量连接为字符串.你需要使用sql:variable("@VariableName").

所以你的例子是这样的:

Declare @Count Int = 1 
While(@count <= @j) 
Begin 
insert into mytable 
([Word]) 

Select ([XmlColumn].value(N'/word[sql:variable("@Count")]/@Entry)[1]','nvarchar(max)'))
    from OtherTable WHERE ID=2
Run Code Online (Sandbox Code Playgroud)