はじめに
SQLの実行時に「大文字・小文字」を区別するかどうかは、データベース毎に動作が異なります。Verticaは、デフォルトでは「大文字・小文字」を区別して扱うため、お客様からは想定した結果が得られないといったご相談をいただくことがあります。本記事では、ilike演算子を使用し「大文字・小文字」を区別せずに検索する方法をご紹介します。
ilike演算子とは
like演算子と同じようにあいまい検索が可能ですが、ilike演算子では「大文字・小文字」を区別せずに検索を行います。使用例
「大文字・小文字」が含まれたtest_a表があります。
1 2 3 4 5 6 7 |
=> select * from test_a; c1 ------- aaaaa AAAAA AAAaa (3 rows) |
「大文字・小文字」が区別されないため、ilike演算子で’aaaaa’を検索した場合、’AAAAA’と’AAAaa’も出力されます。
1 2 3 4 5 6 7 |
=> select * from test_a where c1 ilike 'aaaaa'; c1 ------- AAAAA AAAaa aaaaa (3 rows) |
like演算子と同じようにあいまい検索も可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
## ilike演算子は「大文字・小文字」を区別しない。 => select * from test_a where c1 ilike '%A%'; c1 ------- AAAAA AAAaa aaaaa (3 rows) ## like演算子は「大文字・小文字」を区別する。 => select * from test_a where c1 like '%A%'; c1 ------- AAAAA AAAaa (2 rows) |
補足
本記事のilike演算子とlocaleを併用することで「全角・半角」と「大文字・小文字」の両方を区別せずに検索することも可能です。「全角・半角」を区別しない方法もご覧ください。「全角・半角」を区別しない方法
http://vertica-tech.ashisuto.co.jp/nodistinction_full_half/
参考情報
LIKEhttps://docs.vertica.com/12.0.x/en/sql-reference/language-elements/predicates/like/