В 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
- Н2
- 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
, например, по крайней мере, в некоторых СУБД. Любой/некоторый указатель на ясное утверждение, можно ли это принять или нет, приветствуется.