行和数组比较

更新时间:2024-12-19 07:05:04

本文为您介绍云原生数据仓库 AnalyticDB PostgreSQL 版中行和数组的比较。语法形式类似于子查询表达式,但不涉及子查询。以下所有表达式都将返回布尔结果(真或假)。

PostgreSQL中行和数组比较的详细使用方法,请参见PostgreSQL官方文档:行和数组比较

IN

语法

expression IN (value [, ...])

参数说明

value:表达式列表。如果左边表达式的值等于右边表达式中的任意一个或多个值,IN的结果为true,否则为false。如果左边表达式的值为空值,或右边没有相等的值且右边表达式至少含一个空值,则IN的结果将为空值。

示例

查询nation表中n_name等于ALGERIAARGENTINA的行。

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不等于ALGERIAARGENTINA的行。

SELECT * FROM nation WHERE n_name NOT IN ('ALGERIA','ARGENTINA') ;

ALL

语法

expression operator ALL (array expression)

参数说明

  • operator:比较操作符,例如><。该操作符必须生成布尔结果。

  • arrayALL右边的表达式必须为数组。ALL左边的表达式将与数组中的每个元素逐个比较。如果所有比较结果为true,则ALL的结果为true,否则为false。如果左边表达式包含空值、右边数组为空数组或包含空值元素,ALL的结果为空。

示例

查询nation表中n_nationkey大于0且大于1且大于2的行。

SELECT * FROM nation 
WHERE n_nationkey > ALL(ARRAY[0,1,2]);

ANYSOME

语法

expression operator ANY|SOME (array expression)
说明

SOMEANY等价。

参数说明

arrayANY右边的表达式必须为数组。ANY左边的表达式将与数组中的每个元素逐个比较。如果有任何比较结果为true,则ANY的结果为true,否则为false。如果左边表达式包含空值、右边数组为空数组或包含空值元素,ANY的结果为空。

示例

查询nation表中n_name等于BRAZILCANADATEST的行。

SELECT * FROM nation
WHERE n_name = ANY(ARRAY['BRAZIL', 'CANADA', 'TEST']);
  • 本页导读 (1)
  • IN
  • 语法
  • 参数说明
  • 示例
  • NOT IN
  • 语法
  • 参数说明
  • 示例
  • ALL
  • 语法
  • 参数说明
  • 示例
  • ANY和SOME
  • 语法
  • 参数说明
  • 示例