首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求xml字段的in查询方法解决办法

2012-09-14 
求xml字段的in查询方法记得看过xml字段的in查询方法.但没有记住,出处也找不到了.大约是这样子的要求--建一

求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 

热点排行