乙個略有特殊的Update的語句

2021-04-17 10:14:19 字數 1413 閱讀 1534

今天遇到這樣乙個更新語句:

在使用者表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

@pvarchar(20

)set@p

='''

2'''

update

sys_emplyee

setstatisticsreports

=stuff

(replace('

,'+statisticsreports,',

'+@p,

''),1,

1,'')

where

empaccount='

newsight/zhangzs8896

'更新後返回記錄:

empname      statisticsreports

組長                '1','3'

方法二:

declare

@pvarchar(20

)set@p

='''

2'''

update

sys_emplyee 

setstatisticsreports 

=case

when

(statisticsreports 

like@p+

'%') 

then

replace

(statisticsreports,@p+

',',

'')when

(statisticsreports 

like'%

'+@p) 

then

replace

(statisticsreports,',

'+@p,

'')else

replace

(statisticsreports,',

'+@p+

',',

',') 

endwhere

empaccount='

newsight/zhangzs8896

'

乙個update差點引發的血案

三條語句如下 因為保密原因表名都是處理過的測試表名 update uct user abc t,uct udc t1 set t.user type teacher where t1.id t.user id and t1.user type 1 update uct user abc t,uct ...

乙個特殊的中斷 SVCall

簡述 一種由程式進行觸發的中斷,預設開啟 起源 svc 系統服務呼叫,亦簡稱系統呼叫 多用於在作業系統之上的軟體開發中。svc 用於產生系統函式的呼叫請求。例如,作業系統不讓使用者程式直接訪問硬體,而是通過提供一些系統服務函式,使用者程式使用 svc 發出對系統服務函式的呼叫請求,以這種方法呼叫它們...

乙個比較特殊的字元

位置在鍵盤中數字鍵 1 的左邊,其上檔符號是 使用shift鍵可以換擋為英文輸入法後,單機該鍵即可輸入。由於計算機顯示的原因,反單引號非常容易和單引號 混淆。一 反單引號是西方符號,主要用在linux的bash中。同時在數學軟體mathematica中也有應用。1.在bash中,其用法同 一樣,用 ...