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

More than 3 years have passed since last update.

SPLIT関数を使用して / で区切られた値を抽出する

Last updated at Posted at 2022-06-14

SQLを使い始めてまだ四ヶ月くらいの新米エンジニアです。
最近Treasure Dataを使用することが多いのですが、こうクエリを記載すれば良いのか!と思ったことを備忘録として残します。

「/」で区切られた値が数パターンある場合

例えば以下の表のように、 1つのカラムに「/」が1個、2個、または3個というデータがあり、

test
FURNITURE/KITCHEN
FURNITURE/BEDROOM/TABLE

この中から「/」の一個目の値、2個目の値をそれぞれ別カラムで抽出したい場合は以下のように記載できます。

CASE 
  WHEN (LENGTH(test) - LENGTH(REPLACE(test, '/', ''))) / LENGTH('/') = 1 THEN SPLIT(test, '/')[1]
  WHEN (LENGTH(test) - LENGTH(REPLACE(test, '/', ''))) / LENGTH('/') = 2 THEN SPLIT(test, '/')[2]
END AS split1
CASE 
  WHEN (LENGTH(test) - LENGTH(REPLACE(test, '/', ''))) / LENGTH('/') = 1 THEN SPLIT(test, '/')[1]
  WHEN (LENGTH(test) - LENGTH(REPLACE(test, '/', ''))) / LENGTH('/') = 2 THEN SPLIT(test, '/')[2]
END AS split2

抽出結果は下記になります。

test split1 split2
FURNITURE/KITCHEN FURNITURE KITCHEN
FURNITURE/KITCHEN/CHAIR FURNITURE BEDROOM
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?