Sql 如何检查数组中是否包含字符串?

Sql 如何检查数组中是否包含字符串?,sql,postgresql,Sql,Postgresql,在我的PostgreSQL数据库(version:11.4)中,我有一个名为table_1的表,它只有一列。此列的数据类型为字符串数组(\u varchar) 此外,我还有一个名为table_2的表,其结构如下: | employee | dependence | |----------------|------------| | Alex | \1 | | Mark | \1 | | Lily

在我的PostgreSQL数据库(
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);