containedBy()
该方法仅用于在 jsonb、数组(array)和范围(range)列上进行过滤
contains()的作用是匹配那些其中每个元素都被包含在指定的值中的行。
换句话说,在指定列中,给定的数组(array)
是匹配出来的记录值的子集
也就是说,在指定列中,匹配出来的记录的值包含了给定的数组(array)
的所有元素。
案例1 (关于数组列) link
create table
classes (
id int8 primary key,
name text,
days text[]
);
insert into
classes (id, name, days)
values
(1, 'Chemistry', array['monday', 'friday']),
(2, 'History', array['monday', 'wednesday', 'thursday']);
const { data, error } = await supabase
.from('classes')
.select('name')
.containedBy('days', ['monday', 'tuesday', 'wednesday', 'friday'])
{
"data": [
{
"name": "Chemistry"
}
],
"status": 200,
"statusText": "OK"
}
案例2 (关于范围列) link
create table
reservations (
id int8 primary key,
room_name text,
during tsrange
);
insert into
reservations (id, room_name, during)
values
(1, 'Emerald', '[2000-01-01 13:00, 2000-01-01 15:00)'),
(2, 'Topaz', '[2000-01-02 09:00, 2000-01-02 10:00)');
const { data, error } = await supabase
.from('reservations')
.select()
.containedBy('during', '[2000-01-01 00:00, 2000-01-01 23:59)')
{
"data": [
{
"id": 1,
"room_name": "Emerald",
"during": "[\"2000-01-01 13:00:00\",\"2000-01-01 15:00:00\")"
}
],
"status": 200,
"statusText": "OK"
}
Postgres 支持多种范围类型。您可以使用范围值的字符串表示来过滤范围列。
案例3 (关于jsonb列) link
create table
users (
id int8 primary key,
name text,
address jsonb
);
insert into
users (id, name, address)
values
(1, 'Michael', '{ "postcode": 90210, "street": "Melrose Place" }'),
(2, 'Jane', '{}');
const { data, error } = await supabase
.from('users')
.select('name')
.containedBy('address', {})
{
"data": [
{
"name": "Jane"
}
],
"status": 200,
"statusText": "OK"
}
-
列(column)
[必要参数]
string类型
-
值(value)
[必要参数]
object类型