导航

SQL XML 分隔字符串为表变量

Posted on 2012-12-19 10:56  DotNet1010  阅读(204)  评论(0编辑  收藏  举报

--------这是权限
declare @roles varchar(Max)   SET  @roles='1,5'  set  @roles= Ltrim(Rtrim(@roles))
--------这是分隔字符串 目前以逗号分隔
declare @split char              set   @split=','
--------如果是中文逗号,需要替换为英文逗号
set  @roles=Replace(@roles,',',',')  
--------声明权限表 以及XML 变量
declare @QuanXian Table (id int)  DECLARE @x XML
 SET @x = CONVERT(XML,'<items><item id="' + REPLACE(@roles, @split, '"/><item id="') + '"/></items>')
 INSERT INTO @QuanXian SELECT x.item.value('@id[1]', 'INT') FROM @x.nodes('//items/item') AS x(item)
--------------查询他们的主合同
select a.* from dbo.A a  where Contract_id in(select  contract_Main_id from  dbo.A a
 inner join @QuanXian q  on a.Media_Id=q.Id  )
------------==================================到这里结束 后面的供你参考 可以做其它用途
/*
-------------查询子合同 权限为1,5,9
select  a.* from  dbo.A a   inner join @QuanXian q
on a.Media_Id=q.Id
---------------查询对应的主合同 和 子合同
select  a.* from  dbo.A a   inner join @QuanXian q
on a.Media_Id=q.Id   UNION
select a.* from dbo.A a  where Contract_id in(select  contract_Main_id from  dbo.A a
 inner join @QuanXian q  on a.Media_Id=q.Id  )
*/