Postgres选择数组具有相等值但没有特定顺序的地方

Pat*_*zki 3 sql postgresql

尝试查询表中的值,其中两个数组具有相同的值,但顺序不一定相同。

给定:具有值的列

{'first', 'second'}
Run Code Online (Sandbox Code Playgroud)

预期的:

SELECT * FROM my_table WHERE array_column = {'second', 'first'}
Run Code Online (Sandbox Code Playgroud)

预期的:

SELECT * FROM my_table WHERE array_column = {'second'}
Run Code Online (Sandbox Code Playgroud)

结果 1

{'first', 'second'}
Run Code Online (Sandbox Code Playgroud)

结果2:没有

我可以对我查询的输入数组进行排序,但我不能保证数据库将以相同的顺序存储这些数组。是否有捷径可寻?

Lac*_*bus 5

假设以下数据结构:

CREATE TABLE my_table
(
  id BIGINT PRIMARY KEY,
  array_column TEXT[]
);

INSERT INTO my_table ( id, array_column ) VALUES ( 1, ARRAY['first'] );
INSERT INTO my_table ( id, array_column ) VALUES ( 2, ARRAY['first','second'] );
INSERT INTO my_table ( id, array_column ) VALUES ( 3, ARRAY['first','second','third'] );
Run Code Online (Sandbox Code Playgroud)

结合contains 运算符( @>) 和is 由运算符( <@)包含

SELECT
  *
FROM
  my_table
WHERE
  array_column <@ ARRAY['second','first'] AND
  array_column @> ARRAY['second','first'];
Run Code Online (Sandbox Code Playgroud)

输出:

| id | array_column |
|----|--------------|
|  2 | first,second |
Run Code Online (Sandbox Code Playgroud)

SQLFiddle