SQL Where語句中AND與OR的計算次序

2022-08-24 02:00:13 字數 1601 閱讀 2328

and 用在where子句中,用來指示檢索滿足所有給定條件的行,而or用在where子句中,用來指示檢索匹配任一給定條件的行。

where子句中可包含任意數目的and和or操作符號,但是要注意在sql規範中and操作符的優先順序要高於or操作符。

若一時大意,操作符就會被錯誤組合,查詢出來的結果也是與自己期望南轅北轍了。

假如需要列出**為5元以上且由瑞興生物製藥公司或星城製藥廠生產的所有產品

[sql]view plain

copy

print

?select

prod_name,prod_price 

from

products 

where

supply 

like

'瑞興%'

orsupply 

like

'星城%'

andprod_price>=10  

select prod_name,prod_price from products where supply like '瑞興%' or supply like '星城%' and prod_price>=10
[sql]view plain

copy

print

?prod_name                 prod_price  

prod_name                 prod_price
[sql]view plain

copy

print

?苯唑西林鈉(苯唑青黴素)        6.50  

頭孢氨苄                       13.50  

頭孢羥氨苄                     8.00  

硫酸慶大黴素                   15.00  

紅黴素                         5.50  

苯唑西林鈉(苯唑青黴素)        6.50

頭孢氨苄 13.50

頭孢羥氨苄 8.00

硫酸慶大黴素 15.00

紅黴素 5.50

這個查詢的結果與自己期望的結果不一致。

[html]view plain

copy

print

?硫酸慶大黴素                   15.00  

硫酸慶大黴素                   15.00

此問題就是由於使用or、and操作符預設計算次序造成的,解決的方法就是使用括號明確地分組相應的操作符。

[html]view plain

copy

print

?任何時候使用具有and和or操作的where子句,都應該使用括號明確地分組操作符消除歧義,不要過分的依賴預設計算次序。  

SQL WHERE 子句中的單引號

由於對sql 語句的不熟悉,在機房收費系統中乙個很的簡單問題也可能耽誤很長時間。這篇談及乙個簡單的單引號的使用。如需有條件地從表中選取資料,可將 where 子句新增到 select 語句。我開始沒在sql語句中插入單引號導致錯誤 給msgtext 加監視後 在sql server 中查詢 而加入單...

SQL語句中 UNION與UNION ALL的區別

union用的比較多union all是直接連線,取到得是所有值,記錄可能有重複 union 是取唯一值,記錄沒有重複 1 union 的語法如下 sql 語句 1 union sql 語句 2 2 union all 的語法如下 sql 語句 1 union all sql 語句 2 效率 uni...

SQL語句中 UNION與UNION ALL的區別

union用的比較多 union all是直接連線,取到得是所有值,記錄可能有重複 union 是取唯一值,記錄沒有重複 1 union 的語法如下 sql 語句 1 union sql 語句 2 2 union all 的語法如下 sql 語句 1 union all sql 語句 2 效率 un...