Oracle +查找以分号分隔的列之间的匹配

时间:2016-06-22 07:42:21

标签: sql

我有一个包含两列A和B列的表,其中的值是半冒号分隔的。

  • A的值为'a;b;c;d;e'
  • B的值为'a;b;d;e'

我想检查B列中的值是否全部存在于A列中。

请指导我。

谢谢!

2 个答案:

答案 0 :(得分:2)

您应该修复数据结构。将事物列表存储为字符串是SQL中非常糟糕的做法。存储列表的正确方法是在另一个表中的一行中,每个列表项有一行。

在您的示例中,两个列表都按字母顺序排序。如果你知道这总是如此,你可以这样做:

select t.*
from t
where t.a like '%' || replace(t.b, ';', '%') || %;

这不是你想要的100%,但它可能足够接近你的目的。

答案 1 :(得分:0)

双栏是串联的。

SELECT `first_name`||`last_name` FROM users;

您将获得一个名为的列: first_name || last_name

所以您的查询where t.a like '%' || replace(t.b, ';', '%') || %;

'a;b;d;e'并输出%a%b%d%e%