SQL

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

发布于 2021-05-20 10:59:38

在Postgres中,当在谓词表达式的右侧使用时是ANYSOME的同义词。例如,这些是相同的:

column = ANY (SELECT ...)
column = SOME (SELECT ...)

在此处记录:

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

我已经观察到ANY并且SOME至少受到以下SQL DBMS的支持:

  • DB2
  • Derby
  • H2
  • HSQLDB
  • Ingres
  • MySQL
  • Oracle
  • Postgres
  • SQL Server
  • Sybase ASE
  • Sybase SQL Anywhere

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

我在SQL92定义中发现了这一点:

<quantifier> ::= <all> | <some>
<all> ::= ALL
<some> ::= SOME | ANY

这并没有说明ANY和的语义SOME。在文档的后面,仅<some>引用了两个关键字。我怀疑NULL至少在某些DBMS中在处理方面可能会有细微的差别。欢迎任何/一些指向明确声明的指针,无论是否可以假设。

关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-05-20
    为面试而生,有面试问题,就找面试哥。

    在引用几行之后,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替代方案无关,因此是的,根据标准,它们是同义词



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看