鉴于这个例子:
桌子:
CREATE TABLE public.animals
(
name character varying(64),
whitelist animal_whitelist[]
)
Run Code Online (Sandbox Code Playgroud)
自定义枚举类型animal_whitelist:
CREATE TYPE public.animal_whitelist AS ENUM
('dog',
'cat',
'bird');
Run Code Online (Sandbox Code Playgroud)
我怎样才能专门选择白名单。
在伪代码中,这是我想要选择的。
animal_whitelist等于的行doganimal_whitelist等于和的行dog catanimal_whitelist等于或的任何行dog catanimal_whitelist是不是 dog,cat或bird请检查这一个:
insert into animals ("name", "whitelist") values ('bobic', array['dog']::animal_whitelist[]);
insert into animals ("name", "whitelist") values ('barsic', array['cat']::animal_whitelist[]);
insert into animals ("name", "whitelist") values ('pet', array['dog', 'cat', 'bird']::animal_whitelist[]);
insert into animals ("name") values ('jim');
-- Any rows where the animal_whitelist equals dog
select * from animals where array['dog']::animal_whitelist[] = "whitelist" ;
-- Any rows where the animal_whitelist equals dog and cat
select * from animals where array['dog', 'cat']::animal_whitelist[] = "whitelist" ;
-- Any rows where the animal_whitelist equals dog or cat
select * from animals where array['dog', 'cat']::animal_whitelist[] <@ "whitelist" ;
-- Any rows where the animal_whitelist is not dog, cat, or bird
select * from animals where not array['dog', 'cat', 'bird']::animal_whitelist[] && "whitelist";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1524 次 |
| 最近记录: |