Sql 如何检查数组中是否包含字符串?
在我的PostgreSQL数据库(Sql 如何检查数组中是否包含字符串?,sql,postgresql,Sql,Postgresql,在我的PostgreSQL数据库(version:11.4)中,我有一个名为table_1的表,它只有一列。此列的数据类型为字符串数组(\u varchar) 此外,我还有一个名为table_2的表,其结构如下: | employee | dependence | |----------------|------------| | Alex | \1 | | Mark | \1 | | Lily
version:11.4
)中,我有一个名为table_1
的表,它只有一列。此列的数据类型为字符串数组(\u varchar
)
此外,我还有一个名为table_2
的表,其结构如下:
| employee | dependence |
|----------------|------------|
| Alex | \1 |
| Mark | \1 |
| Lily | \1\2 |
| Grace | \1\2 |
| Evie | \1\2 |
| Bob | \1\2\3 |
| Mark | \1\2 |
如何检查数组中是否包含字符串?在我的例子中,我试图检查表2
中的依赖项
列值是否存在于表1
的依赖项
列的数组中
换句话说,我试图得到这样的结果:
| dependencies | total |
|----------------|-------|
|{\1} | 2 |
|{\1,\1\2} | 6 |
|{\1,\1\2,\1\2\3}| 7 |
我尝试的SQL请求:
select
table_1.dependencies,
calculation.total
from
table_1
join lateral (
select
count(*) as total
from
table_2
where
table_2.dependence in table_1.dependencies /* ? */
) calculation on 1 = 1
使用字段
TEXT[]尝试此操作。
select dependencies ,count(*) from table_1 join table_2
on dependence = ANY( dependencies)
group by 1
表1
create table table_1
(
dependencies text[]
);
insert into public.table_1 (dependencies) values ('{1}');
insert into public.table_1 (dependencies) values ('{1,12}');
insert into public.table_1 (dependencies) values ('{1,12,123}');
表2
create table if not exists table_2
(
employee varchar,
dependence text
);
insert into public.table_2 (employee, dependence) values ('Mark', 12);
insert into public.table_2 (employee, dependence) values ('Lily', 12);
insert into public.table_2 (employee, dependence) values ('Evie', 12);
insert into public.table_2 (employee, dependence) values ('Alex', 1);
insert into public.table_2 (employee, dependence) values ('Mark', 1);
insert into public.table_2 (employee, dependence) values ('Grace', 12);
insert into public.table_2 (employee, dependence) values ('Bob', 123);
create table if not exists table_2
(
employee varchar,
dependence text
);
insert into public.table_2 (employee, dependence) values ('Mark', 12);
insert into public.table_2 (employee, dependence) values ('Lily', 12);
insert into public.table_2 (employee, dependence) values ('Evie', 12);
insert into public.table_2 (employee, dependence) values ('Alex', 1);
insert into public.table_2 (employee, dependence) values ('Mark', 1);
insert into public.table_2 (employee, dependence) values ('Grace', 12);
insert into public.table_2 (employee, dependence) values ('Bob', 123);