Dmi*_*try 5 sql arrays postgresql
如何从另一个数组中排除一个数组的匹配元素?
邮政编码:
a1 := '{1, 2, 5, 15}'::int[];
a2 := '{1, 2, 3, 6, 7, 9, 15}'::int[];
a3 := a2 ??magic_operator?? a1;
Run Code Online (Sandbox Code Playgroud)
在 a3我期望正好是 '{3, 6, 7, 9}'
最后结果
我和 lad2025 解决方案工作正常。
array_position()需要PostgreSQL 9.5及更高版本的解决方案,执行 x3 更快。
附加模块为整数数组intarray提供了一个简单快速的减法运算符-,这正是您正在寻找的magic_operator :
test=# SELECT '{1, 2, 3, 6, 7, 9, 15}'::int[] - '{1, 2, 5, 15}'::int[] AS result;
?column?
-----------
{3,6,7,9}
Run Code Online (Sandbox Code Playgroud)
您需要为每个数据库安装一次模块:
CREATE EXTENSION intarray;
Run Code Online (Sandbox Code Playgroud)
它还为索引提供了特殊的运算符类:
请注意,它仅适用于:
...无空整数数组。