今天遇到这样一个更新语句:
在用户表Sys_emplyee中有一字段Statisticsreports,类型为:varchar(200),这个字段用来记录此用户可以查看的报表的ID, 其中ID是用单引号引起来的,多个ID之间使用逗号分开.
例如:
一个略有特殊的Update的语句.select EmpName,Statisticsreports from  Sys_emplyee
一个略有特殊的Update的语句.
where  EmpAccount='newsight\zhangzs8896'

--返回:
 EmpName      Statisticsreports
 组长                '1','2','3'

现在想取消该用户对某一报表的访问权限,使用以下Sql语句
方法一:
一个略有特殊的Update的语句.declare @p varchar(20)
一个略有特殊的Update的语句.
set @p='''2'''
一个略有特殊的Update的语句.
update Sys_emplyee
一个略有特殊的Update的语句.
set Statisticsreports=stuff(replace(','+Statisticsreports,','+@p,''),1,1,'')
一个略有特殊的Update的语句.
where empaccount='newsight\zhangzs8896'

更新后返回记录:
 EmpName      Statisticsreports
 组长                '1','3'

方法二:
一个略有特殊的Update的语句.declare @p varchar(20)
一个略有特殊的Update的语句.
set @p='''2'''
    update Sys_emplyee 
一个略有特殊的Update的语句.
set Statisticsreports = case when (Statisticsreports like @p+'%'
一个略有特殊的Update的语句.                                 
then replace(Statisticsreports,@p+',','')
一个略有特殊的Update的语句.                             
when (Statisticsreports like '%'+@p
一个略有特殊的Update的语句.                                 
then replace(Statisticsreports,','+@p,'')
一个略有特殊的Update的语句.                             
else replace(Statisticsreports,','+@p+',',','
一个略有特殊的Update的语句.                        
end
一个略有特殊的Update的语句.
where empaccount='newsight\zhangzs8896'

相关文章:

  • 2021-05-30
  • 2022-12-23
  • 2022-12-23
  • 2021-10-03
  • 2022-12-23
  • 2021-09-13
  • 2021-11-02
猜你喜欢
  • 2021-09-12
  • 2021-08-14
  • 2021-06-16
  • 2021-10-31
  • 2022-12-23
  • 2021-09-29
  • 2021-09-09
相关资源
相似解决方案