一個有趣的SQL命題 用一條語句切換BIT型的真假值
更新時間:2009年08月05日 23:17:43 作者:
有個需求,用一條SQL語句(SQL SERVER)的,切換某個BIT字段值。也就是說從TRUE變FALSE,從FALSE到TRUE。
當然,第一反應是用存儲過程。判斷原來這個字段值,然后UPDATE。
網(wǎng)上粗粗找了一下沒找到方案。自己一動手,居然有個很有趣的結果,連WHERE都不用
對數(shù)據(jù)庫的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;
可以發(fā)現(xiàn)每次結果就在0和1之間切換,SQL SERVER把-1當做1來處理。
這個需求很容易就解決了。
通常這在一些狀態(tài)切換(或開關)的地方會用到,在需求中不需要知道切換后的情況。很有趣也很簡單,呵呵
網(wǎng)上粗粗找了一下沒找到方案。自己一動手,居然有個很有趣的結果,連WHERE都不用
對數(shù)據(jù)庫的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;
可以發(fā)現(xiàn)每次結果就在0和1之間切換,SQL SERVER把-1當做1來處理。
這個需求很容易就解決了。
通常這在一些狀態(tài)切換(或開關)的地方會用到,在需求中不需要知道切換后的情況。很有趣也很簡單,呵呵
相關文章
使用SqlBulkCopy時應注意Sqlserver表中使用缺省值的列
今天,想將以前做的一個程序增加點功能,原本就使用SqlBulkCopy批量、定時的從目錄中的txt文件導入數(shù)據(jù)到Sqlserver中。以前一直都使用正常,但是不知怎的就老是出現(xiàn)一個錯誤2012-07-07
MSsql每天自動備份數(shù)據(jù)庫并每天自動清除log的腳本
有自己服務器的朋友需要用到的東西,因為mssql數(shù)據(jù)需要經(jīng)常備份2008-09-09
深入SQL SERVER合并相關操作Union,Except,Intersect的詳解
本篇文章是對SQL SERVER合并相關操作Union,Except,Intersect進行了詳細的分析介紹,需要的朋友參考下2013-06-06
SQL Server創(chuàng)建鏈接服務器的存儲過程示例分享
創(chuàng)建鏈接服務器。鏈接服務器讓用戶可以對 OLE DB 數(shù)據(jù)源進行分布式異類查詢。在使用 sp_addlinkedserver 創(chuàng)建鏈接 服務器后,可對該服務器運行分布式查詢。2014-07-07

