我有一个包含列表的列表(是的,我知道这违反了规范化)。我试图找到一些“重叠”功能的疼痛,即
SELECT * FROM TABLE WHERE 'a,b,c' OVERLAP TABLE.LISTCOLUMN
因此,LISTCOLUMN
包含a,b或c
答案 0 :(得分:1)
两个选项:
如果您使用的是Oracle 10g或更高版本,请使用regexp_like
:
select *
from my_table
where regexp_like(listcolumn, '[abc]')
这与您的表中的所有内容相匹配,其中a
或 b
或 c
位于列中。
或者你可以做更可怕和难以维护的事情:
select *
from my_table
where listcolumn like '%a%'
or listcolumn like '%b%'
or listcolumn like '%c%'
但是,正如您已经知道的那样,正确地规范化数据库将为您节省很多痛苦。
答案 1 :(得分:-1)
你的意思是:
选择* 来自TABLE1 其中LISTCOLUMN在('a','b','c')