操作符
操作符 |
描述 |
示例 |
结果 |
= |
相等 |
SELECT ARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3]; |
t |
<> |
不等于 |
select ARRAY[1,2,3] <> ARRAY[1,2,4]; |
t |
< |
小于 |
select ARRAY[1,2,3] < ARRAY[1,2,4]; |
t |
> |
大于 |
select ARRAY[1,4,3] > ARRAY[1,2,4]; |
t |
<= |
小于或等于 |
select ARRAY[1,2,3] <= ARRAY[1,2,3]; |
t |
>= |
大于或等于 |
select ARRAY[1,4,3] >= ARRAY[1,4,3]; |
t |
@> |
包含 |
select ARRAY[1,4,3] @> ARRAY[3,1]; |
t |
<@ |
包含于 |
select ARRAY[2,7] <@ ARRAY[1,7,4,2,6]; |
t |
&& |
重叠(是否有相同元素) |
select ARRAY[1,4,3] && ARRAY[2,1]; |
t |
|| |
数组与数组连接 |
select ARRAY[1,2,3] || ARRAY[4,5,6]; |
{1,2,3,4,5,6} |
|| |
数组与数组连接 |
select ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]]; |
{{1,2,3},{4,5,6},{7,8,9}} |
|| |
元素与数组连接 |
select 3 || ARRAY[4,5,6]; |
{3,4,5,6} |
|| |
数组与元素连接 |
select ARRAY[4,5,6] || 7; |
{4,5,6,7} |
函数
函数 |
返回类型 |
描述 |
示例 |
结果 |
|
anyarray |
在数组末尾追加元素 |
SELECT array_append(ARRAY[1,2], 3); |
{1,2,3} |
|
anyarray |
连接两个数组 |
SELECT array_cat(ARRAY[1,2,3], ARRAY[4,5]); |
{1,2,3,4,5} |
|
int |
返回数组维数 |
SELECT array_ndims(ARRAY[[1,2,3], [4,5,6]]); |
2 |
|
text |
返回数组维数的文本表示 |
SELECT array_dims(ARRAY[[1,2,3], [4,5,6]]); |
[1:2][1:3] |
|
anyarray |
使用提供的值和维度初始化一个数组,其中anyelement是值,第一个int[]是数组的长度,第二个int[]是数组下界,下界默认是1 |
SELECT array_fill(7, ARRAY[3], ARRAY[2]); |
[2:4]={7,7,7} |
|
int |
返回数组指定维度的长度 |
SELECT array_length(array[1,2,3], 1); |
3 |
|
int |
返回数组指定维度的下界 |
SELECT array_lower('[0:2]={1,2,3}'::int[], 1); |
0 |
|
int |
返回数组元素anyelement从数组的[,int]位置(默认为1)开始第一次出现在数组中的位置,数组必须是一维的 |
SELECT array_position(ARRAY['sun','mon','tue','wed','thu','fri','sat'], 'mon'); |
2 |
|
int[] |
返回元素在数组中的所有位置 |
SELECT array_positions(ARRAY['A','A','B','A'], 'A'); |
{1,2,4} |
|
anyarray |
在数组开头添加新的元素 |
SELECT array_prepend(1, ARRAY[2,3]); |
{1,2,3} |
|
anyarray |
从数组中删除所有的指定元素,必须是一维数组 |
SELECT array_remove(ARRAY[1,2,3,2], 2); |
{1,3} |
|
anyarray |
替换指定数组元素为新的元素 |
SELECT array_replace(ARRAY[1,2,5,4], 5, 3); |
{1,2,3,4} |
|
text |
将数组元素使用分隔符连接为文本,NULL可以使用指定元素替换 |
SELECT array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*'); |
1,2,3,*,5 |
|
int |
数组指定维度的上届 |
SELECT array_upper(ARRAY[1,8,3,7], 1); |
4 |
|
int |
返回数组所有维度的长度总和,如果是空数组则返回0 |
SELECT cardinality(ARRAY[[1,2],[3,4]]); |
4 |
|
text[] |
将文本使用分隔符分隔后转换为数组,如果指定第三个参数,则第三个参数在数组中被转换为NULL |
SELECT string_to_array('xx~^~yy~^~zz', '~^~', 'yy'); |
{xx,NULL,zz} |
|
setof anyelement |
将数组元素转换为行 |
SELECT unnest(ARRAY[1,2]); |
1 |
|
setof anyelement, anyelement [, ...] |
将多维数组转换为行集合,其中第一个数组显示为第一列,第二个数组显示为第二列,以此类推。但是这个函数只在from子句中使用 |
SELECT * from unnest(ARRAY[1,2],ARRAY['foo','bar','baz']); |
unnest | unnest |