久久久亚洲精品一区二区三区,久久精品2025中文字幕 ,国产精品无码专区,久久久久无码精品国产情侣,亚洲第一女人av,中文日韩亚洲欧美制服

外地客戶如不方便將要進(jìn)行數(shù)據(jù)恢復(fù)的儲存設(shè)備(如硬盤,U盤等)送到我們數(shù)據(jù)恢復(fù)中心,可以通過快遞至我數(shù)據(jù)恢復(fù)中心。

SQL Server如何使用WHERE組合AND和OR操作符的計算次序

WHERE可包含任意數(shù)目的AND和OR操作符。允許兩者結(jié)合以進(jìn)行復(fù)雜和高級的過濾。

但是,組合AND和OR帶來了一個有趣的問題。為了說明這個問題,來看一個例子。假如需要列出價格為10美元(含)以上且由1002或1003制造的所有產(chǎn)品。下面的SELECT語句使用AND和OR操作符的組合建立了一個WHERE子句:

SELECT prod_ name,prod_price
FROM products
WHERE vend_id=1002 OR vend_id=1003 AND prod_price>=10;
prod_name prod_ price
Detonator
Bird seed
Fuses
0il can
Safe
TNT(5 sticks))
13.00
10.00
3.42
8.99
50.00
10.00

請看上面的結(jié)果。返回的行中有兩行價格小于10美元,顯然,返回的行未按預(yù)期的進(jìn)行過濾。為什么會這樣呢?原因在于計算的次序。SQL(像多數(shù)語言一樣)在處理OR操作符前,優(yōu)先處理AND操作符。當(dāng)SQL看到上述WHERE子句時,它理解為由供應(yīng)商1003制造的任何價格為10美元(含)以上的產(chǎn)品,或者由供應(yīng)商1002制造的任何產(chǎn)品,而不管其價格如何。換句話說,由于AND在計算次序中優(yōu)先級更高,操作符被錯誤地組合了。

此問題的解決方法是使用圓括號明確地分組相應(yīng)的操作符。請看下面的SELECT語句及輸出:

SELECT prod_name,prod_price
FROM products
WHERE (vend_id=1002 OR vend_id=1003)AND prod_price>=10;
prod_name prod_ price
Detonator
Bird seed
Safe
TNT(5 sticks)
13.00
10.00
50.00
10.00

這條SELECT語句與前一條的唯一差別是,這條語句中,前兩個條件用圓括號括了起來。因為圓括號具有較AND或OR操作符高的計算次序,DBMS首先過濾圓括號內(nèi)的OR條件。這時,SQL語句變成了選擇由供應(yīng)商1002或1003制造的且價格都在10美元(含)以上的任何產(chǎn)品,這正是我們所希望的。

在WHERE子句中使用圓括號 任何時候使用具有AND和OR操作符的WHERE子句,都應(yīng)該使用圓括號明確地分組操作符。不要過分依賴默認(rèn)計算次序,即使它確實是你想要的東西也是如此。使用圓括號沒有什么壞處,它能消除歧義。

轉(zhuǎn)載請注明:成都千喜數(shù)據(jù)恢復(fù)中心 » SQL Server如何使用WHERE組合AND和OR操作符的計算次序

喜歡 (19)

您必須 登錄 才能發(fā)表評論!

頂部 電話 微信
微信號:18328458868
QQ 地圖 底部