В Postgres ANY
и SOME
являются синонимами при использовании в правой части выражения предиката. Например, это одно и то же:
column = ANY (SELECT ...)
column = SOME (SELECT ...)
Это задокументировано здесь:
http://www.postgresql.org/docs/9.1/static/functions-subquery.html#FUNCTIONS-SUBQUERY-ANY-SOME
Я заметил, что ANY
и SOME
поддерживаются по крайней мере этими СУБД SQL:
- DB2
- Derby
- H2
- HSQLDB
- Энгр
- MySQL
- Oracle
- Postgres
- SQL Server
- Sybase ASE
- Sybase SQL Anywhere
Могу ли я с уверенностью предположить, что все эти диалекты (и другие тоже) трактуют ANY
и SOME
как синонимы или есть тонкая разница между двумя ключевыми словами в любой / некоторых СУБД?
Я нашел это в определении SQL92:
<quantifier> ::= <all> | <some>
<all> ::= ALL
<some> ::= SOME | ANY
Это ничего не говорит о семантике ANY
и SOME
. Далее в документе упоминается только <some>
, а не два ключевых слова. Я подозреваю, что может быть небольшая разница в обработке NULL
, например, по крайней мере, в некоторых СУБД. Любой / некоторый указатель на четкое утверждение, можно ли это предположить или нет, приветствуется.