码迷,mamicode.com
首页 > 其他好文 > 详细

一个使用exist的例子

时间:2020-03-25 19:11:14      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:ring   管理   ida   增加   nio   item   where   公司   sele   

公司项目中原来不支持集团分公司,为了解决分公司切换过滤问题,有以下几种实现方法

一、管理员只管理一个分公司

这种情况简单,增加一个分公司字段,where 条件增加一个 fgs=xxx即可

二、管理员能管理多个分公司

1、增加分公司字段

2、使用split与当前登录管理员能管理的分公司进行join

这种方式可以,但是对代码改动太大,所有的sql语句都要增加join,使用exist可以解决这个问题

示例:

string strFilter = "exists(SELECT * from dnt_split(\"+ ins.ToString()+ "\, ,) where item = xxxid)";

这样可以不动现有代码情况下,实现分公司过滤。dnt_split是一个将字符串转临时表的函数。请参考历史文章。

 

示例:使用表变量转换字符串为表的方法:

--要转化为表结构的数据
DECLARE @Ins VARCHAR(1000)=1,2,3
--定义表变量存储结果
DECLARE @IdArr table(name varchar(200))
--要执行的动态sql语句
DECLARE @sqlStr VARCHAR(1000)
--使用replace将逗号替换
set @sqlStr=select name=‘‘‘+REPLACE(@Ins,,,‘‘‘ union all select ‘‘‘)+‘‘‘‘
--执行并保存到表变量
insert into @IdArr EXEC(@sqlStr)
select * from @IdArr

 

一个使用exist的例子

标签:ring   管理   ida   增加   nio   item   where   公司   sele   

原文地址:https://www.cnblogs.com/zhaogaojian/p/12568397.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!