Oracle MySQL サンプルクエリ:
大文字小文字を区別しません:
select * from database where column like '%THANK YOU%';
大文字と小文字を区別:
select * from database where column LIKE BINARY '%THANK YOU%';
大文字小文字を区別しません:
select * from database where column REGEXP 'THANK YOU';
オラクルのクエリ:
select * from database WHERE REGEXP_LIKE(column, 'THANK YOU', 'i')
Oracle では LIKE を使用できますが、大文字と小文字を区別しない設定はバージョンによって異なります。
大文字と小文字を区別:
select * from database WHERE column LIKE 'THANK YOU';
Oracle のように大文字と小文字を区別しないようにすることについては、多くの議論があります。そのためには reg_exp バージョンを使用し、大文字とi
小文字を区別しないようにフラグを設定する方が簡単です。
更新
元の質問は、実際には私の最初の回答とは反対であり、データマイニング用に構築しているかなりの数のアプリについて本当に頭を悩ませました。実は昨夜このアイデアを思いつきましたが、元のポスターは私が投稿する前に投稿していました (Fiddle は停止していました)。MySQL では、正規表現を REGEXP 関数の両側に一致させることができます。したがって、式のリストをデータベースに保存すると、式のリストをエントリのテーブルまたは単一の文字列と実際に比較できます。
ここに SQL Fiddle を追加しました: http://sqlfiddle.com/#!8/701a0/2
元の例では、データベースの「regex」値がアスタリスクだけで始まっていることに注意してください。正規表現では、実際の文字列は、おそらく任意の文字に対して .* である必要があります。
Web サイト、米国のフリーダイヤル番号、Gmail アカウントなどを照合するための例をいくつか追加しました。
INSERT INTO `myRegex` VALUES (1,'.* THANK YOU$'),(2,'MUSIC'),(3,'I LIKE .* MUSIC'),(4,'I LIKE .* MUSIC AND .* PAINTING'),(5,'^[0-9]?[ .-]?(800|866)'),(6,'\\.com$'),(7,'\\.net$'),(8,'\\.(gmail|googlemail)\\.'),(9,'THANK YOU');
出力
select * from myRegex where 'HI THANK YOU' REGEXP reg_expr;
select * from myRegex where 'THANK YOU MUCH' REGEXP reg_expr;