2

単語が表示される大文字と小文字や順序を気にせずに、ワイルドカード(Oracleの場合)を使用して検索する方法。

たとえば、を検索するとlike '%a%b%'、* a * b *、* A * B *、* b * a *、* B * A *を含む値が返されるはずです。これは単なるサンプルであり、検索には5つ以上の単語が含まれる可能性があります。 ANDを使用するのではなく、1つの式だけで結果を取得することができます。

4

2 に答える 2

3
select * 
from yourtable
where yourfield like '%a%'
and yourfield like '%b%'

または、 OracleTextを調査することもできます

于 2012-09-06T13:42:22.963 に答える
0
select * from table
 where upper(column) like '%A%B%';

また

select * from table
 where lower(column) like '%a%b%';

また

select * from table
 where upper(column) like '%A%'
   and upper(column) like '%B%';

また

select * from table
 where lower(column) like '%a%'
   and lower(column) like '%b%';

ただし、調べたい場合*a*b*など*b*a*。もう1つの解決策はCHARSVARCHAR最初にを並べ替えることです。つまり、のような文字列がある場合は、aebcdそれを並べ替えてからabcde、likeを使用してパターンマッチングを実行します。これに従って、以下のクエリを使用してvarchar内の文字を並べ替えてから、パターンマッチングを行うことができます。

SELECT 1 val
FROM (SELECT MIN(permutations) col
        FROM (SELECT REPLACE (SYS_CONNECT_BY_PATH (n, ','), ',') permutations
                FROM (SELECT LEVEL l, SUBSTR ('cba', LEVEL, 1) n
                        FROM DUAL   --replace dual by your table
             CONNECT BY LEVEL <= LENGTH ('cba')) yourtable
      CONNECT BY NOCYCLE l != PRIOR l)
        WHERE LENGTH (permutations) = LENGTH ('cba')) temp_tab
  WHERE upper(col) like '%A%B%';

戻り値

val 
------------------
1
于 2012-09-06T14:00:43.180 に答える