0
0

More than 1 year has passed since last update.

【データ基盤構築/BigQuery】文字列の前後の空白を除去するに、TRIM関数を使用する

Last updated at Posted at 2022-10-28

今回の課題

SQLで文字列を分解していたところ、
余計な空白が入ってしまった。

余計な空白を除くために、TRIM関数を使用してみた。

TRIM関数とは

トリミングする STRING 値または BYTES 値を取ります。
トリミングする値が STRING の場合、この値から set_of_characters_to_remove の先頭と末尾の Unicode コードポイントをすべて削除します。コードポイントのセットは省略可能です。指定しない場合、トリミングする値の先頭と末尾からすべての空白文字が削除されます。
トリミングする値が BYTES の場合、この値から set_of_characters_to_remove の先頭と末尾のバイトをすべて削除します。バイトのセットは必須です。
--https://cloud.google.com/bigquery/docs/reference/standard-sql/string_functions#trim

つまり、指定した文字列の、先頭と末尾のUnicodeコードポイントを除去できる関数。
Unicodeコードポイントを指定しなければ、空白が除去される。

具体例

文字列の前後に空白が入る失敗例

1)下記のテーブルを用意する

contents_title page_title
ドラゴンボールZ ドラゴンボールZ 1話
ドラゴンボールZ ドラゴンボールZ 2話
ドラゴンボールZ ドラゴンボールZ 3話

2)上記のテーブルに下記のクエリを使用して、話数を別カラムに抽出する

select
    contents_title
    , page_title
    , replace(page_title, contents_title, "") as episode_number --話数を別カラムで抽出
from
    `テーブル名`

episode_numberの文字列の前に、全角の空白が入ってしまった状態の下記のデータが出力される。

contents_title page_title episode_number
ドラゴンボールZ ドラゴンボールZ 1話 (全角スペース)1話
ドラゴンボールZ ドラゴンボールZ 2話 (全角スペース)2話
ドラゴンボールZ ドラゴンボールZ 3話 (全角スペース)3話

空白を除く方法

1)下記のテーブルを用意する

contents_title page_title
ドラゴンボールZ ドラゴンボールZ 1話
ドラゴンボールZ ドラゴンボールZ 2話
ドラゴンボールZ ドラゴンボールZ 3話

2)上記のテーブルにTRIM関数を組み込んだ、下記のクエリを実行する

select
    contents_title
    , page_title
    , trirm(replace(page_title, contents_title, "")) as episode_number --話数を別カラムで抽出
from
    `テーブル名`

結果、episode_numberの文字列の前の空白を除去することができた。

contents_title page_title episode_number
ドラゴンボールZ ドラゴンボールZ 1話 1話
ドラゴンボールZ ドラゴンボールZ 2話 2話
ドラゴンボールZ ドラゴンボールZ 3話 3話

以上で今回の課題を解決することができた。

0
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
0
0