SQL(oracle)比较两个列表

时间:2012-09-04 18:05:24

标签: sql oracle

我有一个包含列表的列表(是的,我知道这违反了规范化)。我试图找到一些“重叠”功能的疼痛,即

SELECT * FROM TABLE WHERE 'a,b,c' OVERLAP TABLE.LISTCOLUMN 

因此,LISTCOLUMN包含a,b或c

中的任何一个或全部

2 个答案:

答案 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%'

这里有一点SQL Fiddle来演示。

但是,正如您已经知道的那样,正确地规范化数据库将为您节省很多痛苦。

答案 1 :(得分:-1)

你的意思是:

选择* 来自TABLE1 其中LISTCOLUMN在('a','b','c')