在 Postgres 中,ANY
and SOME
当用在谓词表达式的右侧时是同义词。例如,这些是相同的:
column = ANY (SELECT ...)
column = SOME (SELECT ...)
此处记录了这一点:
http://www.postgresql.org/docs/9.1/static/functions-subquery.html#FUNCTIONS-SUBQUERY-ANY-SOME http://www.postgresql.org/docs/9.1/static/functions-subquery.html#FUNCTIONS-SUBQUERY-ANY-SOME
我观察到ANY
and SOME
至少受以下 SQL DBMS 支持:
- DB2
- Derby
- H2
- HSQLDB
- Ingres
- MySQL
- Oracle
- Postgres
- SQL服务器
- 赛贝斯ASE
- Sybase SQL Anywhere
我可以放心地假设所有这些方言(以及其他方言)都对待ANY
and SOME
作为同义词,或者任何/某些 DBMS 中的两个关键字之间是否存在细微差别?
我在 SQL92 定义中发现了这一点:
<quantifier> ::= <all> | <some>
<all> ::= ALL
<some> ::= SOME | ANY
这并没有说明任何关于语义的事情ANY
and SOME
。稍后在文档中仅<some>
被引用,而不是两个关键字。我怀疑可能存在细微的差别NULL
例如,至少在某些 DBMS 中进行处理。欢迎任何/一些指向明确声明是否可以假设的指针。
在您引用的内容之后几行,SQL92 标准还指定了语义<some>
,即:
c) If the implied <comparison predicate> is true for at least
one row RT in T, then "R <comp op> <some> T" is true.
d) If T is empty or if the implied <comparison predicate> is
false for every row RT in T, then "R <comp op> <some> T" is
false.
e) If "R <comp op> <quantifier> T" is neither true nor false,
then it is unknown.
这些规则适用于<some>
令牌,独立于它是 SOME 还是 ANY 替代方案,所以是的,根据标准它们是同义词
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)