1

リストを含む列を持つテーブルがあります(はい、これが正規化に違反していることはわかっています)。私は「オーバーラップ」機能のいくつかの痛みを見つけようとしています。

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

したがって、LISTCOLUMNa、b、または c のいずれかまたはすべてを含む

4

2 に答える 2

1

2つのオプション:

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フィドルです。

ただし、すでにご存知のように、データベースを適切に正規化することで、長期的には多くの苦痛を軽減できます。

于 2012-09-04T18:36:20.880 に答える
-1

あなたは次のような意味です:

('a'、'b'、'c')のLISTCOLUMNであるTABLE1から*を選択します

于 2012-09-04T18:09:19.797 に答える