如何确定列表是否至少具有相同的元素

发布于 2025-01-24 18:33:29 字数 500 浏览 5 评论 0原文

产品表包含标签列:

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

Product table contains tags columns:

create table product(
  product char(20) primary key,
  tag1 char(100),
  tag2 char(100) )

tag columns contain tags separated by semicolon like

AB;AC;AD
RXX;AC;XAD
RP12;X455;R444;AXD

How to find all rows where tag1 and tag2 columns contain at least one same tag ?

For example row

tag1        tag2
AB;AC;AD    RXX;ZAC;XAD;AC

should be in result since both columns contain AC

Row

tag1        tag2
AB;XAC;AD    RXX;ZAC;XAD;AC

Should not be in result since all tags are different.

Using PostgreSQL 13.2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

—━☆沉默づ 2025-01-31 18:33:29

您可以使用&&操作员检查列中是否有共同元素。为此,您必须首先使用String_to_array

SELECT * FROM my_table WHERE  (string_to_array(tag1,';')::text[]) && (string_to_array(tag2,';')::text[])

emo in dbfiddle

You can use the && operator to check if there are common elements in the columns. To do this, you must first convert the string to an array using the string_to_array

SELECT * FROM my_table WHERE  (string_to_array(tag1,';')::text[]) && (string_to_array(tag2,';')::text[])

Demo in DBfiddle

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文