我有一个包含两列A和B列的表,其中的值是半冒号分隔的。
'a;b;c;d;e'
'a;b;d;e'
我想检查B列中的值是否全部存在于A列中。
请指导我。
谢谢!
答案 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%