1

我的问题是:-假设我们有如下条件(ConditionA OR ConditionB 或 ConditionC)。如果我的条件A 为真,将检查其他条件还是跳过这些条件。

4

2 回答 2

0

它会跳过其他的;一旦满足其中一个条件!

于 2019-02-11T10:42:19.900 回答
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 开头,则错误,因为第二个条件被评估。

--OLD ANSWER 有时,如果你大声说出逻辑,它就会变得很明显......

因此,如果“食物 = 鱼或食物 = 肉或食物 = 蔬菜,则烹饪食物”。很明显,如果食物是肉、鱼或蔬菜,那么你就煮它。

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

另一方面,如果“(食物 = 鱼或食物 = 肉或食物 = 蔬菜)并且烤箱 = 工作,然后烹饪食物”则表示您必须有鱼、肉或蔬菜,并且烤箱必须在工作。因此,通过将 OR 分组在括号中,我们将其与 AND 分开。

于 2019-02-11T10:45:44.987 回答