Oracle 文字列のあいまい検索 LIKE条件

スポンサーリンク

文字列のあいまい検索をする方法

文字列のあいまい検索をするには、「LIKE」条件を使います。
「char_1(検索値)」の文字列から「char_2(パターン)」の文字列を検索します。

「LIKE」条件の基本構文

--検索値 [NOT] LIKE パターン
char_1 [NOT] LIKE char_2
特殊パターン一致文字説明
アンダースコア(_)パターン中のアンダースコア(_)は、文字列の中の1文字を表します。
パーセント記号(%)パターン中のパーセント記号(%)は、文字列の中の複数文字を表します。

「LIKE」条件の実行例

以下の検証用のテーブルとデータを使用します。

SQL> select * from animal1;

ID    NAME       ADDRESS
----- ---------- ----------
001   いるか     海
002   うさぎ     陸
003   ぺんぎん   空
004   いるか     海
010   ふくろう   海

アンダースコア(_)の使い方

アンダースコア(_)は、任意の1文字を表します。

SQL> select * from animal1 where id LIKE '00_';

ID    NAME       ADDRESS
----- ---------- ----------
001   いるか     海
002   うさぎ     陸
003   ぺんぎん   空
004   いるか     海

パーセント記号(%)の使い方

パーセント記号(%)は、複数文字を表すので。下の例でいうと「ぺんぎん」もちゃんとあいまい検索でひっかかってるのがわかりますね\(^o^)/

SQL> select * from animal1 where name LIKE '%ぎ%';

ID    NAME       ADDRESS
----- ---------- ----------
002   うさぎ     陸
003   ぺんぎん   空

「NOT LIKE」条件でパターン文字列以外を検索

パターン文字列以外を検索する方法は、「LIKE」の前に「NOT」を記述するだけです。

SQL> select * from animal1 where name NOT LIKE '%ぎ%';

ID    NAME       ADDRESS
----- ---------- ----------
001   いるか     海
004   いるか     海
010   ふくろう   海

「LIKE」条件のパフォーマンス

「LIKE」条件は、基本的にパフォーマンスがでにくくなる傾向があります。
実際に実務で使用する際には十分に検証が必要になります。
お気をつけて\(^o^)/

パフォーマンスチューニング系のおすすめの本は、以下になります。
SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)

コメント

タイトルとURLをコピーしました