0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PostgreSQLでのあいまい検索

Last updated at Posted at 2020-10-26

曖昧検索について

SQLで曖昧検索をするには、LIKE句を使用するのが一般的であるが、Postgresqlでは別の書き方もできるので、メモ程度に残していこうと思う。

演算子を使った曖昧検索

  • 以下のレコードが投入されているテーブルがあるとする。
id language
1 Java
2 JavaScript
3 Ruby
4 PHP
-- LIKE句を用いたSQL
SELECT * FROM hoge WHERE name LIKE 'Java%'

-- Postgresqlの演算子を用いたSQL
SELECT * FROM hoge WHERE name ~~ 'Java%'

上記のSQLを実行した場合両方同一の結果が得られる

+------------------+
| id | language    |   
+------------------+
| 1   | Java       |
| 2   | JavaScript |
+------------------+

大文字小文字を区別せずに曖昧検索をする

少し話がそれてしまうが、Postgresqlでは,曖昧検索で、大文字と小文字を区別せずに検索を行うためのILIKEが標準で実装されている。LIKE句に比べたら、そこまで使用頻度は高くないかもしれないが、知っておくことに越したことはない。

ユーザーが自由入力でき、大文字小文字の入力チェックを行わない項目には有効かもしれない。

先程のテーブルのレコードを少しばかり変更する。
Javajava
JavaScriptjavascript

id language
1 java
2 javascript
3 Ruby
4 PHP
-- ILIKE句を用いたSQL
SELECT * FROM hoge WHERE name ILIKE 'Java%'

-- Postgresqlの演算子を用いたSQL
SELECT * FROM hoge WHERE name ~~* 'Java%'

先ほどと同様に上記のSQLを実行した場合両方同一の結果が得られる

+------------------+
| id | language    |   
+------------------+
| 1   | Java       |
| 2   | javascript |
+------------------+

~~~~*はいずれもPostgresql固有の演算子です。
もちろんNOT LIKE,NOT ILIKEと対になる!~~!~~* 演算子もあります。

参考文献

PostgreSQL 12.3文書 第9章 関数と演算子 9.7. パターンマッチ1

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?