“ OR”运算符的工作方式

时间:2019-02-11 10:38:25

标签: sql sql-server oracle

我的问题是:- 假设我们有如下条件 (条件A或ConditionB或ConditionC)。如果我的conditionA变为true,则将检查其他条件,或者我将跳过这些条件。

2 个答案:

答案 0 :(得分:0)

它将跳过其他的;  一旦满足条件之一!

答案 1 :(得分:0)

-更新

好-我错过了重点(见下文)。 在TSQL中,该子句按顺序进行求值,但是一旦将某行视为匹配项,就不对下一个OR求值。

所以select * from information_schema.columns where 1=1 or 1/0=10 不会失败,因为1总是等于1,并且永远不会进行除以零。

另一方面

select * from information_schema.columns
where COLUMN_NAME like 'keyname_%' or 1/0=10

如果所有column_names以keyname开头,则成功,但如果第二个条件被求值,则任何列都不以keyname开头,则错误。

-老答案 有时候,如果您大声说出逻辑,那就很明显了……

因此,如果“食物=鱼或食物=肉或食物=蔬菜,然后煮食物” 。 显然,如果食物是肉,鱼或蔬菜,那么您可以煮饭。

通常会吸引人的地方是您还想要AND的地方 所以。 如果“食物=鱼或食物=肉或食物=蔬菜和烤箱=工作然后煮食物”。 如果烤箱正在工作,这将尝试烹饪食物,无论您是否有食物。

另一方面,如果“(食物=鱼或食物=肉或食物=蔬菜),烤箱=工作然后煮食物” 表示您必须有鱼,肉或蔬菜以及烤箱必须工作。因此,通过将“或”分组到括号中,我们将其与“与”分离。