小编典典

是WHERE子句中标准SQL的方括号

sql

我目前正在做的课程在其WHERE子句中使用方括号,如下所示:

SELECT bar
FROM   Foo
WHERE (CurrentState = 'happy');

这是标准的sql吗? 如果不是,那为什么要使用它们呢?

我所用的Date&Darwen书中似乎没有使用过。


编辑

只是为了澄清-我指的是1992 SQL标准


阅读 181

收藏
2021-03-23

共1个答案

小编典典

是的。您可以使用括号来绑定where子句的组件。这是不是在你的榜样必要的,但如果你有多个andor组件,您可能需要括号要么确保作业或仅仅是为了自我文档查询正确的顺序。

范例1:

select *
from foo
where 
   (class='A' and subclass='B')
   or (class='C' and subclass='D')

在示例1中,并非严格要求使用parens,因为and绑定比绑定更紧密or,但是如果您有多个or条件受约束,则and需要它以获得正确的结果,如下面的示例2所示。

范例2:

select *
from foo
where 
   (class='A' or class='B')
   and (subclass='C' or subclass='D')

无论哪种情况,我都使用它们,因为我不希望像查询优化器那样用脑子里解析sql-我宁愿明确它,也可以更快地了解其意图。

2021-03-23