SQL ANY和SOME关键字在所有SQL方言中都是同义词吗?

Luk*_*der 11 sql subquery any sql-standards

在Postgres中,ANY并且SOME在谓词表达式的右侧使用时是同义词.例如,这些是相同的:

column = ANY (SELECT ...)
column = SOME (SELECT ...)
Run Code Online (Sandbox Code Playgroud)

这在此处记录:

http://www.postgresql.org/docs/9.1/static/functions-subquery.html#FUNCTIONS-SUBQUERY-ANY-SOME

我已观察ANYSOME至少得到这些SQL DBMS的支持:

  • DB2
  • 德比
  • H2
  • HSQLDB
  • 安格尔
  • MySQL的
  • 神谕
  • Postgres的
  • SQL Server
  • Sybase ASE
  • Sybase SQL Anywhere

我可以安全地假设所有这些方言(以及其他方言)都作为同义词处理ANY,SOME或者在任何/某些DBMS中两个关键字之间是否存在细微差别?

我在SQL92定义中找到了这个:

<quantifier> ::= <all> | <some>
<all> ::= ALL
<some> ::= SOME | ANY
Run Code Online (Sandbox Code Playgroud)

这并没有说出ANY和的语义SOME.稍后在文档中,仅<some>引用,而不是两个关键字.我怀疑在NULL处理方面可能存在细微差别,例如,至少在一些DBMS中.任何/某些指向明确声明的指针是否可以被假定是值得欢迎的.

voi*_*ine 5

在您引用之后的几行中,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.
Run Code Online (Sandbox Code Playgroud)

这些规则适用于<some>令牌,独立于是否是SOME或ANY替代,所以是的,它们是根据标准的同义词