一個有趣的SQL命題 用一條語句切換BIT型的真假值

有個需求,用一條SQL語句(SQL SERVER)的,切換某個BIT字段值。也就是說從TRUE變FALSE,從FALSE到TRUE。

當然,第一反應是用存儲過程。判斷原來這個字段值,然后UPDATE。
網上粗粗找了一下沒找到方案。自己一動手,居然有個很有趣的結果,連WHERE都不用
數據庫的BIT型賦值,用SQL語句來操作和用管理界面輸入不同。管理界面輸入必須用TRUE或FALSE來填寫。而SQL語句則用0或1
于是乎,先嘗試:
代碼如下:
updat t set b=b+1 where id=1;
select b from t where id=1;

b字段一直保持1
那么用減號呢
代碼如下:
update t set b=b-1 where id=1;
select b from t where id=1;

可以發現每次結果就在0和1之間切換,SQL SERVER把-1當做1來處理。
這個需求很容易就解決了。
通常這在一些狀態切換(或開關)的地方會用到,在需求中不需要知道切換后的情況。很有趣也很簡單,呵呵

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享