ARRAY数据类型运算符
@>(包含)
检查一个数组是否包含另一个数组的所有元素。
并不要求两个数组完全相同,只要左侧的数组包含右侧数组的所有元素即可。如果右侧数组中有多个相同的元素,而左侧数组中只有一个该元素,@>
仍然会返回TRUE。
sql
SQL> SELECT ARRAY[1,4,3] @> ARRAY[3,1,3];
EXPR1 |
------------------------------------------------------------------------------
T |
<@(被包含)
检查一个数组是否是另一个数组的子集。即左侧的数组中的所有元素都必须存在于右侧的数组中。
并不要求两个数组完全相同,只要左侧的数组中的所有元素都在右侧的数组中即可。如果左侧数组中有多个相同的元素,而右侧数组中只有一个该元素,<@
仍然会返回TRUE。
sql
SQL> SELECT ARRAY[2,2,7] <@ ARRAY[1,7,4,2,6];
EXPR1 |
------------------------------------------------------------------------------
T |
&&(交集)
检查两个数组是否有至少一个共同的元素。
sql
SQL> SELECT ARRAY[1,4,3] && ARRAY[2,1];
EXPR1 |
------------------------------------------------------------------------------
T |
||(连接)
连接两个数组
注意:
- 数组必须具有相同的维数或维数相差一维。
- 数组可以和NULL连接,不支持空数组连接。
- 两个数组元素的类型必须相同。
sql
-- 相同维数
SQL> SELECT ARRAY[1,2,3] || ARRAY[4,5,6,7];
EXPR1 |
------------------------------------------------------------------------------
{1,2,3,4,5,6,7}|
-- 相差一维
SQL> SELECT ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]];
EXPR1 |
------------------------------------------------------------------------------
{{1,2,3},{4,5,6},{7,8,9}}|
连接数组和元素
注意:
与元素连接的数组必须为一维数组。
将元素连接到数组的开头:
sqlSQL> SELECT 3 || ARRAY[4,5,6]; EXPR1 | ------------------------------------------------------------------------------ {3,4,5,6}|
将元素连接到数组的末尾:
sqlSQL> SELECT ARRAY[4,5,6] || 7; EXPR1 | ------------------------------------------------------------------------------ {4,5,6,7}|