文字列のあいまい検索をする方法
文字列のあいまい検索をするには、「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)
コメント