求xml字段的in查询方法
记得看过xml字段的in查询方法.但没有记住,出处也找不到了.
大约是这样子的要求
--建一个测试表
create table #t
(
className nvarchar(50),
class int
)
go
--插入几个测试记录
insert into #t values( 'abc ',1)
insert into #t values( 'def ',2)
insert into #t values( 'ghi ',3)
insert into #t values( 'jkl ',4)
insert into #t values( 'mno ',5)
go
declare @xml xml;--定义个xml变量
set @xml= '
<root>
<item type= "class " value= "2 " />
<item type= "class " value= "4 " />
</root> ';
SELECT * FROM #t
where class in
(
select @xml.query( 'for $x in //item return <s> {data($x/@value)} </s> ') from Join_member
)
go
drop table #t
go
要求 是想从#t内查询出class值是在@xml中的/root/item/@value中的记录,,,,,,,,,,,,,,,,,,
但上面的查询是错的,,,,
错误消息是
操作数类型冲突: xml 与 int 不兼容
------解决方案--------------------
SQL code
SELECT * FROM #t
where @xml.exist('//item[@value=sql:column("class")]')=1