我有一个表,其中有一列包含一个列表(是的,我知道这违反了规范化)。我试图找到一些“重叠”功能,即
SELECT * FROM TABLE WHERE 'a,b,c' OVERLAP TABLE.LISTCOLUMN
因此,LISTCOLUMN
包含 a、b 或 c 中的任何一个或全部
两种选择:
使用regexp_like
,如果您使用的是 Oracle 10g 或更高版本:
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%'
但是,正如您已经知道的那样,从长远来看,正确地规范化您的数据库将为您节省很多痛苦。
你的意思是:
Select * from TABLE1 where LISTCOLUMN in ('a','b','c')