行和数组比较
本文为您介绍云原生数据仓库 AnalyticDB PostgreSQL 版中行和数组的比较。语法形式类似于子查询表达式,但不涉及子查询。以下所有表达式都将返回布尔结果(真或假)。
PostgreSQL中行和数组比较的详细使用方法,请参见PostgreSQL官方文档:行和数组比较。
IN
语法
expression IN (value [, ...])
参数说明
value
:表达式列表。如果左边表达式的值等于右边表达式中的任意一个或多个值,IN
的结果为true,否则为false。如果左边表达式的值为空值,或右边没有相等的值且右边表达式至少含一个空值,则IN
的结果将为空值。
示例
查询nation表中n_name
等于ALGERIA
或ARGENTINA
的行。
SELECT * FROM nation WHERE n_name IN ('ALGERIA','ARGENTINA') ;
NOT IN
语法
expression NOT IN (value [, ...])
参数说明
value
:表达式列表。如果左边表达式的值不等于右边表达式中的所有值,NOT IN
的结果为true,否则为false。如果左边表达式的值为空值,或右边没有相等的值且右边表达式至少含一个空值,则NOT IN
的结果将为空值。
示例
查询nation表中n_name
不等于ALGERIA
和ARGENTINA
的行。
SELECT * FROM nation WHERE n_name NOT IN ('ALGERIA','ARGENTINA') ;
ALL
语法
expression operator ALL (array expression)
参数说明
operator
:比较操作符,例如>
、<
。该操作符必须生成布尔结果。array
:ALL
右边的表达式必须为数组。ALL
左边的表达式将与数组中的每个元素逐个比较。如果所有比较结果为true,则ALL
的结果为true,否则为false。如果左边表达式包含空值、右边数组为空数组或包含空值元素,ALL
的结果为空。
示例
查询nation表中n_nationkey
大于0
且大于1
且大于2
的行。
SELECT * FROM nation
WHERE n_nationkey > ALL(ARRAY[0,1,2]);
ANY和SOME
语法
expression operator ANY|SOME (array expression)
SOME和ANY等价。
参数说明
array
:ANY
右边的表达式必须为数组。ANY
左边的表达式将与数组中的每个元素逐个比较。如果有任何比较结果为true,则ANY
的结果为true,否则为false。如果左边表达式包含空值、右边数组为空数组或包含空值元素,ANY
的结果为空。
示例
查询nation表中n_name
等于BRAZIL
、CANADA
或TEST
的行。
SELECT * FROM nation
WHERE n_name = ANY(ARRAY['BRAZIL', 'CANADA', 'TEST']);
- 本页导读 (1)
- IN
- 语法
- 参数说明
- 示例
- NOT IN
- 语法
- 参数说明
- 示例
- ALL
- 语法
- 参数说明
- 示例
- ANY和SOME
- 语法
- 参数说明
- 示例