在Postgres中,ANY
和SOME
在謂詞表達式的右側使用時是同義詞。例如,這些是相同的:所有SQL方言中的SQL 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的
- 甲骨文
- Postgres的
- SQL服務器
- 的Sybase ASE
- Sybase SQL Anywhere的
我可以有把握地認爲所有這些d ialect(和其他人)將ANY
和SOME
視爲同義詞,還是在任何/某些DBMS中的兩個關鍵字之間存在細微差別?
我在SQL92定義發現這一點:
<quantifier> ::= <all> | <some>
<all> ::= ALL
<some> ::= SOME | ANY
這並不是說有關的ANY
和SOME
語義事情。稍後在文檔中,僅引用<some>
,而不是兩個關鍵字。我懷疑NULL
在處理方面可能存在細微差別,例如至少在某些DBMS中。任何/某些指向明確聲明的指針是否可以假定或不可接受。你什麼報價後
+1我甚至不知道有些什麼,直到這個問題。每天學些新東西! :-) – klabranche 2012-01-07 17:41:37
@klabranche:是的,它允許非常優雅的subquerying! Postgres甚至接受[ANY(array),SOME(array),ALL(array)](http://www.postgresql.org/docs/9.1/static/functions-comparisons.html#AEN17416)語法 – 2012-01-07 17:45:37
絕對是放入工具帶。 – klabranche 2012-01-07 17:58:24