はじめに
Athena の検索で全角半角・大文字小文字の区別なしにクエリを実行したい場合があります。
全角半角を統一するには NFKC 正規化を行います。Athena では NORMALIZE 関数を使用します。
大文字・小文字を統一するにはケースフォールディングを行います。Athena では LOWER 関数を使用して小文字に統一します。
NFKC 正規化
NFKC 正規化を行うためには NORMALIZE
関数を使用します。
半角カタカナ
SELECT NORMALIZE('コンニチハ', NFKC)
結果
コンニチハ
全角英数字・記号
SELECT NORMALIZE('ABCd 123?!', NFKC)
結果
ABCd 123?!
NFKC にクォーテーションは不要です。以下のようにシングルクォーテーションを付けるとエラーが発生します。
SELECT NORMALIZE('ABCd 123?!', 'NFKC');
エラー内容
Queries of this type are not supported
ケースフォールディング
ケースフォールディングを行うためには LOWER
関数を使用します。
SELECT LOWER('Hello, World!');
結果
hello, world!
NFKC 正規化とケースフォールディングを同時に行う
SELECT LOWER(NORMALIZE('Athena サーチ', 'NFKC'));
結果
athena サーチ
まとめ
Athena で全角半角や大文字小文字を区別せずに検索したい場合は、
-
NORMALIZE(文字列, NFKC)
で全角半角を統一 -
LOWER(文字列)
で小文字に統一
を組み合わせることで実現できます。
参考