一個(gè)有趣的SQL命題 用一條語(yǔ)句切換BIT型的真假值
更新時(shí)間:2009年08月05日 23:17:43 作者:
有個(gè)需求,用一條SQL語(yǔ)句(SQL SERVER)的,切換某個(gè)BIT字段值。也就是說從TRUE變FALSE,從FALSE到TRUE。
當(dāng)然,第一反應(yīng)是用存儲(chǔ)過程。判斷原來這個(gè)字段值,然后UPDATE。
網(wǎng)上粗粗找了一下沒找到方案。自己一動(dòng)手,居然有個(gè)很有趣的結(jié)果,連WHERE都不用
對(duì)數(shù)據(jù)庫(kù)的BIT型賦值,用SQL語(yǔ)句來操作和用管理界面輸入不同。管理界面輸入必須用TRUE或FALSE來填寫。而SQL語(yǔ)句則用0或1
于是乎,先嘗試:
updat t set b=b+1 where id=1;
select b from t where id=1;
b字段一直保持1
那么用減號(hào)呢
update t set b=b-1 where id=1;
select b from t where id=1;
可以發(fā)現(xiàn)每次結(jié)果就在0和1之間切換,SQL SERVER把-1當(dāng)做1來處理。
這個(gè)需求很容易就解決了。
通常這在一些狀態(tài)切換(或開關(guān))的地方會(huì)用到,在需求中不需要知道切換后的情況。很有趣也很簡(jiǎn)單,呵呵
網(wǎng)上粗粗找了一下沒找到方案。自己一動(dòng)手,居然有個(gè)很有趣的結(jié)果,連WHERE都不用
對(duì)數(shù)據(jù)庫(kù)的BIT型賦值,用SQL語(yǔ)句來操作和用管理界面輸入不同。管理界面輸入必須用TRUE或FALSE來填寫。而SQL語(yǔ)句則用0或1
于是乎,先嘗試:
復(fù)制代碼 代碼如下:
updat t set b=b+1 where id=1;
select b from t where id=1;
b字段一直保持1
那么用減號(hào)呢
復(fù)制代碼 代碼如下:
update t set b=b-1 where id=1;
select b from t where id=1;
可以發(fā)現(xiàn)每次結(jié)果就在0和1之間切換,SQL SERVER把-1當(dāng)做1來處理。
這個(gè)需求很容易就解決了。
通常這在一些狀態(tài)切換(或開關(guān))的地方會(huì)用到,在需求中不需要知道切換后的情況。很有趣也很簡(jiǎn)單,呵呵
相關(guān)文章
sqlserver通用的刪除服務(wù)器上的所有相同后綴的臨時(shí)表
因?yàn)轫?xiàng)目需要,必須使用大量臨時(shí)表,因此編寫批量刪除臨時(shí)表的通用語(yǔ)句2012-05-05
使用SqlBulkCopy時(shí)應(yīng)注意Sqlserver表中使用缺省值的列
今天,想將以前做的一個(gè)程序增加點(diǎn)功能,原本就使用SqlBulkCopy批量、定時(shí)的從目錄中的txt文件導(dǎo)入數(shù)據(jù)到Sqlserver中。以前一直都使用正常,但是不知怎的就老是出現(xiàn)一個(gè)錯(cuò)誤2012-07-07
MSsql每天自動(dòng)備份數(shù)據(jù)庫(kù)并每天自動(dòng)清除log的腳本
有自己服務(wù)器的朋友需要用到的東西,因?yàn)閙ssql數(shù)據(jù)需要經(jīng)常備份2008-09-09
MS SQL Server游標(biāo)(CURSOR)的學(xué)習(xí)使用
使用MS SQL Server這樣久,游標(biāo)一直沒有使用過。以前都是使用WHILE循環(huán)加臨時(shí)表來實(shí)現(xiàn)。剛剛聯(lián)系個(gè)示例了解到游標(biāo)概念與語(yǔ)法
2014-06-06
深入SQL SERVER合并相關(guān)操作Union,Except,Intersect的詳解
本篇文章是對(duì)SQL SERVER合并相關(guān)操作Union,Except,Intersect進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
2013-06-06
SQL Server創(chuàng)建鏈接服務(wù)器的存儲(chǔ)過程示例分享
創(chuàng)建鏈接服務(wù)器。鏈接服務(wù)器讓用戶可以對(duì) OLE DB 數(shù)據(jù)源進(jìn)行分布式異類查詢。在使用 sp_addlinkedserver 創(chuàng)建鏈接
服務(wù)器后,可對(duì)該服務(wù)器運(yùn)行分布式查詢。
2014-07-07 
