1
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?

【AWS】AthenaでNFKC正規化とケースフォールディング

Posted at

はじめに

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(文字列) で小文字に統一

を組み合わせることで実現できます。

参考

1
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
1
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?