尝试查询表中的值,其中两个数组具有相同的值,但顺序不一定相同。
给定:具有值的列
{'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:没有
我可以对我查询的输入数组进行排序,但我不能保证数据库将以相同的顺序存储这些数组。是否有捷径可寻?
假设以下数据结构:
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)
| 归档时间: |
|
| 查看次数: |
1604 次 |
| 最近记录: |