如何确定列表是否至少有一个相同的元素
How to determine if lists have at least one same element
产品 table 包含标签列:
create table product(
product char(20) primary key,
tag1 char(100),
tag2 char(100) )
标签列包含用分号分隔的标签,如
AB;AC;AD
RXX;AC;XAD
RP12;X455;R444;AXD
如何查找 tag1 和 tag2 列至少包含一个相同标记的所有行?
例如行
tag1 tag2
AB;AC;AD RXX;ZAC;XAD;AC
应该在结果中,因为两列都包含 AC
行
tag1 tag2
AB;XAC;AD RXX;ZAC;XAD;AC
不应出现在结果中,因为所有标签都不同。
使用 PostgreSQL 13.2
您可以使用 &&
运算符来检查列中是否存在公共元素。为此,您必须首先使用 string_to_array
将字符串转换为数组
SELECT * FROM my_table WHERE (string_to_array(tag1,';')::text[]) && (string_to_array(tag2,';')::text[])
演示在 DBfiddle
产品 table 包含标签列:
create table product(
product char(20) primary key,
tag1 char(100),
tag2 char(100) )
标签列包含用分号分隔的标签,如
AB;AC;AD
RXX;AC;XAD
RP12;X455;R444;AXD
如何查找 tag1 和 tag2 列至少包含一个相同标记的所有行?
例如行
tag1 tag2
AB;AC;AD RXX;ZAC;XAD;AC
应该在结果中,因为两列都包含 AC
行
tag1 tag2
AB;XAC;AD RXX;ZAC;XAD;AC
不应出现在结果中,因为所有标签都不同。
使用 PostgreSQL 13.2
您可以使用 &&
运算符来检查列中是否存在公共元素。为此,您必须首先使用 string_to_array
SELECT * FROM my_table WHERE (string_to_array(tag1,';')::text[]) && (string_to_array(tag2,';')::text[])
演示在 DBfiddle