这只是一个简单的问题,以获得有关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