当前位置: 代码迷 >> Sql Server >> 求xml字段的in查询方法解决办法
  详细解决方案

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

热度:46   发布时间:2016-04-27 11:21:49.0
求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([email protected])} </s> ')   from   Join_member
)
go
drop   table   #t
go

要求   [email protected][email protected],,,,,,,,,,,,,,,,,,
但上面的查询是错的,,,,
错误消息是
操作数类型冲突:   xml   与   int   不兼容



------解决方案--------------------
SQL code
SELECT   *     FROM   #t where @xml.exist('//item[@value=sql:column("class")]')=1
  相关解决方案