BigQueryで全角英数を半角英数に変換する
以下の流れで処理しています。
- TO_CODE_POINTS 関数を使って文字列をコードポイントの配列に変換します。
- コードポイント配列をUNNESTします。
- コードポイントが全角英数にマッチする場合、対応する半角英数のコードポイントになるようにずらします。
- コードポイントを配列にまとめ直し、CODE_POINTS_TO_STRING 関数を使って配列を文字列に戻します。
https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#to_code_points
クエリ
#StandardSQL WITH sample AS ( #サンプルデータを用意 SELECT dat FROM UNNEST( ["ABCDEFGHIJKLMNOPQRSTUVWXYZ","ABCDEFGH1234","USA","29800円"] ) AS dat ) SELECT dat, CODE_POINTS_TO_STRING( ARRAY( SELECT CASE # 全角大文字を半角大文字に変換 WHEN code_point_arr BETWEEN 65313 AND 65338 THEN code_point_arr-65248 # 全角小文字を半角小文字に変換 WHEN code_point_arr BETWEEN 65345 AND 65370 THEN code_point_arr-65248 # 全角数字を半角数字に変換 WHEN code_point_arr BETWEEN 65296 AND 65305 THEN code_point_arr-65248 ELSE code_point_arr END FROM # # TO_CODE_POINTS の引数に、半角変換を行いたい列を指定する # UNNEST( TO_CODE_POINTS(dat) )AS code_point_arr )) as formatted_dat FROM sample
以上です。