今天遇到这样一个更新语句:
在用户表Sys_emplyee中有一字段Statisticsreports,类型为:varchar(200),这个字段用来记录此用户可以查看的报表的ID, 其中ID是用单引号引起来的,多个ID之间使用逗号分开.
例如:
select EmpName,Statisticsreports from Sys_emplyee
where EmpAccount='newsight\zhangzs8896'
--返回:
EmpName Statisticsreports
组长 '1','2','3'
现在想取消该用户对某一报表的访问权限,使用以下Sql语句
方法一:
declare @p varchar(20)
set @p='''2'''
update Sys_emplyee
set Statisticsreports=stuff(replace(','+Statisticsreports,','+@p,''),1,1,'')
where empaccount='newsight\zhangzs8896'
更新后返回记录:
EmpName Statisticsreports
组长 '1','3'
方法二:
declare @p varchar(20)
set @p='''2'''
update Sys_emplyee
set Statisticsreports = case when (Statisticsreports like @p+'%')
then replace(Statisticsreports,@p+',','')
when (Statisticsreports like '%'+@p)
then replace(Statisticsreports,','+@p,'')
else replace(Statisticsreports,','+@p+',',',')
end
where empaccount='newsight\zhangzs8896'
在用户表Sys_emplyee中有一字段Statisticsreports,类型为:varchar(200),这个字段用来记录此用户可以查看的报表的ID, 其中ID是用单引号引起来的,多个ID之间使用逗号分开.
例如:
select EmpName,Statisticsreports from Sys_emplyee
where EmpAccount='newsight\zhangzs8896'--返回:
EmpName Statisticsreports
组长 '1','2','3'
现在想取消该用户对某一报表的访问权限,使用以下Sql语句
方法一:
declare @p varchar(20)
set @p='''2'''
update Sys_emplyee
set Statisticsreports=stuff(replace(','+Statisticsreports,','+@p,''),1,1,'')
where empaccount='newsight\zhangzs8896'更新后返回记录:
EmpName Statisticsreports
组长 '1','3'
方法二:
declare @p varchar(20)
set @p='''2'''update Sys_emplyee
set Statisticsreports = case when (Statisticsreports like @p+'%')
then replace(Statisticsreports,@p+',','')
when (Statisticsreports like '%'+@p)
then replace(Statisticsreports,','+@p,'')
else replace(Statisticsreports,','+@p+',',',')
end
where empaccount='newsight\zhangzs8896'
浙公网安备 33010602011771号