やりたいこと
BigQueryで全角英数字を半角に正規化する。
方法
NORMALIZE()関数を使う。
NORMALIZE(正規化したい文字列, 正規化のオプション)
正規化のオプション4つ
値 | 名前 | 説明 |
---|---|---|
NFC | 正規化形式 C | 標準的な同値によって文字を分解し、再構成する。 |
NFKC | 正規化形式 KC | 互換性によって文字を分解し、標準的な同値によって再構成する。 |
NFD | 正規化形式 D | 標準的な同値によって文字を分解し、複数の結合文字を特定の順序で並べる。 |
NFKD | 正規化形式 KD | 互換性によって文字を分解し、複数の結合文字を特定の順序で並べる。 |
select
normalize("ABCABC漢字123123\u00ea", NFC) AS NFC,
normalize("ABCABC漢字123123\u00ea", NFKC) AS NFKC,
normalize("ABCABC漢字123123\u00ea", NFD) AS NFD,
normalize("ABCABC漢字123123\u00ea", NFKD) AS NFKD
全角を半角にしたいよ…というときは2つ目の「NFKC正規化」を使えば良いらしいとのこと。
この4つの正規化手法の定義について調べてみましたが、、説明できるほどちゃんとは理解できませんでしたm(__)m こちらの記事がとてもわかりやすかったです。
参考にさせていただいた記事
ITIPS様 「BigQueryで全角半角変換など文字列の正規化する方法」
@fury00812様 「Unicode正規化」