行和数组比较
本文为您介绍云原生数据仓库 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']);