新聞中心
SQL Server數(shù)據(jù)庫(kù)ISNULL函數(shù)的使用是本文我們主要要介紹的內(nèi)容,我們通過(guò)實(shí)例來(lái)說(shuō)明ISNULL函數(shù)的使用,接下來(lái)我們就開始介紹這部分內(nèi)容。

創(chuàng)新互聯(lián)公司IDC提供業(yè)務(wù):重慶服務(wù)器托管,成都服務(wù)器租用,重慶服務(wù)器托管,重慶服務(wù)器租用等四川省內(nèi)主機(jī)托管與主機(jī)租用業(yè)務(wù);數(shù)據(jù)中心含:雙線機(jī)房,BGP機(jī)房,電信機(jī)房,移動(dòng)機(jī)房,聯(lián)通機(jī)房。
1.利用ISNULL函數(shù)干掉OR運(yùn)算!
題目是查詢表中VAL小于20的值,包括NULL值:
- SELECT * FROM T WHERE ISNULL(VAL,-1) < 20
- SELECT * FROM T WHERE VAL IS NULL OR VAL < 20
兩個(gè)SQL具有相同的輸出結(jié)果
- GRP_A GRP_B GRP_C VAL
- ---- ----- ----- ---
- a1 b1 c1 10
- a1 b1 c2 10
- a2 b3 c3 NULL
- a2 b3 c3 NULL
- a2 b3 c3 NULL
- (5 行受影響)
- GRP_A GRP_B GRP_C VAL
- ---- ------ ---- --
- a1 b1 c1 10
- a1 b1 c2 10
- a2 b3 c3 NULL
- a2 b3 c3 NULL
- a2 b3 c3 NULL
- (5 行受影響)
2.ISNULL非主流更新表存儲(chǔ)過(guò)程示例
如某更新表存儲(chǔ)過(guò)程如下:
- CREATE PROC UpdateT(
- @ID INT,
- @GRP_A VARCHAR(10) = NULL,
- @GRP_B VARCHAR(10) = NULL,
- @GRP_C VARCHAR(10) = NULL,
- @VAL INT = 0
- )AS
- BEGIN
- UPDATE T SET
- GRP_A = @GRP_A,
- GRP_B = @GRP_B,
- GRP_C = @GRP_C,
- VAL = @VAL
- WHERE ID = @ID
- END
當(dāng)我們使用這個(gè)存儲(chǔ)過(guò)程的時(shí)候,必須先得該行的所有記錄,再把所有記錄更新回去,可是這并不總是必須的。有時(shí)候手頭只有兩個(gè)數(shù)據(jù):ID和VAL,我只想更新這個(gè)VAL,又有時(shí)候手頭有另外兩個(gè)數(shù)據(jù):ID和GRP_A,這時(shí)候只更新GRP_A列即可。還有很多情況,如:
僅更新GRP_A,
僅更新GRP_A,GRP_B
僅更新GRP_A,GRP_B,GRP_C
僅更新GRP_A,GRP_B,GRP_C,VAL
...
這樣的組合太多了,要想一勞永逸解決問(wèn)題那就得更新任何字段前,先得到整行記錄,再整行更新回去,于是多了一項(xiàng)工作:先查詢,再更新,那沒(méi)有辦法不先查詢直接更新某一列呢?而且列可以任意組合?
在給出答案前,先聲明一句:這個(gè)方法算不上完美解決方案,僅僅是個(gè)思路罷了,雖然我一直認(rèn)為沒(méi)什么影響,但如果要在正式項(xiàng)目中使用,建議還是多聽聽DBA的意見(jiàn)!
非主流更新任意列存儲(chǔ)過(guò)程:
- CREATE PROC UpdateT(
- @ID INT,
- @GRP_A VARCHAR(10) = NULL,
- @GRP_B VARCHAR(10) = NULL,
- @GRP_C VARCHAR(10) = NULL,
- @VAL INT = 0
- )AS
- BEGIN
- UPDATE T SET
- GRP_A = ISNULL(@GRP_A,GRP_A),
- GRP_B = ISNULL(@GRP_B,GRP_B),
- GRP_C = ISNULL(@GRP_C,GRP_C),
- VAL = ISNULL(@VAL,VAL)
- WHERE ID = @ID
- END
關(guān)于SQL Server數(shù)據(jù)庫(kù)ISNULL函數(shù)的應(yīng)用實(shí)例就介紹到這里了,如果您想了解更多SQL Server數(shù)據(jù)庫(kù)的知識(shí),可以看一下這里的文章:http://database./sqlserver/,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】
- SQL Server 2000層次數(shù)據(jù)查詢的實(shí)現(xiàn)方法
- SQL Server根據(jù)語(yǔ)言查詢來(lái)返回不同的結(jié)果
- SQL Server 2008連接數(shù)據(jù)庫(kù)引擎的驅(qū)動(dòng)和方式
- SQL Server查找XML里面符合某個(gè)條件的數(shù)據(jù)的用法
- SQL Server的執(zhí)行計(jì)劃及SQL查詢優(yōu)化實(shí)例分析與總結(jié)
網(wǎng)頁(yè)標(biāo)題:SQLServer數(shù)據(jù)庫(kù)ISNULL函數(shù)的應(yīng)用實(shí)例
文章URL:http://m.5511xx.com/article/dhdjdee.html


咨詢
建站咨詢
