11

PostgresではANYSOME述語式の右側で使用される場合の同義語です。たとえば、これらは同じです。

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

これはここに文書化されています:

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

私は、少なくともこれらのSQL DBMSを観察ANYし、サポートする予定です。SOME

  • DB2
  • ダービー
  • H2
  • HSQLDB
  • アングル
  • MySQL
  • オラクル
  • Postgres
  • SQLサーバー
  • Sybase ASE
  • Sybase SQL Anywhere

これらの方言のすべて(および他の方言も)が同義語として扱いANYSOME同義語として扱われると安全に想定できますか、それとも一部のDBMSの2つのキーワードの間に微妙な違いがありますか?

私はこれをSQL92定義で見つけました:

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

ANYこれは、とのセマンティクスについては何も言いませんSOME。ドキュメントの後半では<some>、2つのキーワードではなく、参照されるだけです。NULLたとえば、少なくとも一部のDBMSでは、処理に微妙な違いがあるのではないかと思います。これが想定できるかどうかの明確なステートメントへの任意の/いくつかのポインタは大歓迎です。

4

1 に答える 1

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.

これらのルールは、<some>トークンがSOMEまたはANYの代替であるかどうかに関係なく、トークンに適用されるため、はい、標準による同義語です。

于 2012-01-07T17:46:15.007 に答える