這只是一個簡單的問題,以獲得有關SQL如何工作的更多知識。SQL如何處理Oracle 11g中的where子句?
如果我有多個條件的查詢,例如第二個語句爲false,那麼在查詢中第二個語句之後的其餘語句是否仍會被評估,或者SQL是否跳過此處並開始再次與下一行?
例子:
SELECT * FROM MY_TABLE
WHERE NAME = "PETER"
AND LANGUAGE = "ENGLISH"
AND COUNTRY = "UK"
AND ENCRYPTION = "SHA-1";
我們的數據庫看起來是這樣的:
| NAME | LANGUAGE | COUNTRY | ENCRYPTION |
PETER, ENGLISH, UK, SHA-1
PETER, FRENCH, SWITZERLAND, SHA-1
PETER, ENGLISH, USA, SHA-1
現在,當它到達第二個條目,將在語言條件查詢停止,因爲它是「假」 ,請忽略以下條件並繼續進行下一個條目,否則它會檢查國家和加密嗎?
您正在使用哪個[DBMS](https://en.wikipedia.org/wiki/DBMS)產品? Postgres的?甲骨文? 「_SQL_」只是一種查詢語言,而不是特定數據庫產品的名稱。但是一般來說,「SQL」不會對錶達式進行短路。 –
MySQL也對WHERE條件中的條件執行短路評估,但它不一定按您在查詢中編寫它們的順序對它們進行評估。無論如何,爲了查詢的目的,它應該沒有關係。 – axiac