数组:找不到可变[]的数据类型字符的数组类型



我有以下用于演示的示例数据:

表格

create table tbl_array
(
array_data varchar[]
);

一些值:

insert into tbl_array values('{AUS,USA}'),('{IND,SA}'),('{UK,UAE,NZ}'),('{CAN,BAN,SL,KW}');

查询:我有输入值{USA,AUS}{KW,CAN,SL,BAN}{UK,UAE,NZ}来从tbl_array获取详细信息。输入值可以有任何序列。

预期输出

对于{USA,AUS}:

array_data
-------------
{AUS,USA}

对于{KW,CAN,SL,BAN}:

array_data
-------------
{CAN,BAN,SL,KW}

对于{UK,UAE,NZ}:

array_data
-------------
{UK,UAE,NZ}

尝试

select *
from tbl_array where array_data = ALL('{USA,AUS}');

获取错误:

找不到数据类型字符变化[]的数组类型

试试这个:

select * from tbl_array where array_data @> '{USA,AUS}' AND array_length(array_data, 1) = 2;

它必须同时包含(忽略顺序(和长度为2(如果您愿意,可以排除其他情况(。

array_length(array_data, 1)1表示你的数组是一维的。

我还假设您的数组中有无重复

还要注意,包含@>的数组可以从GIN索引中受益。

最新更新