見出し画像

Tableau|文字列関数

yukoです。めちゃめちゃ間が空いてしまった・・・
受験勉強期間なので、動かして書いて覚えたいと思います!
本日のVer.は、2022.4です。

文字列関数を使う理由

文字列関数は、文字列データ (テキストデータ) の操作を可能にします。

FIND

FIND(string, substring, [start])
・string 内の substring のインデックス位置を返します。
・substringが見つからない場合は、「0」を返します。
・オプションの引数 start を追加した場合、この関数は同じ処理を行いますが、インデックス位置 start より前に現れる substring のインスタンスはすべて無視されます。
・文字列の最初の文字の位置は「1」です。

FIND( 文字列全体,  探したい文字,   [開始位置]  ) なので、この場合

FIND("今日も元気だ、ごはんがうまい", "ごはん")     → 8
FIND("今日も元気だ、ごはんがうまい", "ごはん", 5) → 8
FIND("今日も元気だ、ごはんがうまい", "ごはん", 9) → 0
FIND("今日も元気だ、ごはんがうまい", "お肉")   → 0

  • 引数 [start] のデフォルトは「1」(ってこと)

  • 引数 [start] より後ろで、探したい文字があれば位置を返してくれる

  • 引数 [start] より後ろで、探したい文字が見つからなければ「0」を返す

MID

MID(string, start, [length])
・インデックス位置 start で始まる文字列を返します。
・文字列の最初の文字の位置は 1 です。
・オプションの引数 length を追加した場合、その文字数分が返ります。

MID( 文字列全体, 開始位置, [長さ] )  なので、この場合

MID("今日も元気だ、ごはんがうまい", 8)    → ごはんがうまい
MID("今日も元気だ、ごはんがうまい", 8, 3)   → ごはん
MID("今日も元気だ、ごはんがうまい", 8,100)  → ごはんがうまい
MID("今日も元気だ、ごはんがうまい", 100)   →     (表示なし)

ISNULL(MID("今日も元気だ、ごはんがうまい",100)) → false (not NULL)

  • 引数[length]は、文字数が明確なときだけ設定

  • 開始位置が文字数全体の長さを超えている場合、何も返さない(のね)

  • 特定の文字を探し出して抜くには、FINDと組み合わせる

SPLIT

SPLIT(string, delimiter, token number)
・指定した文字列を基に、区切り文字を使用して連続したトークンに文字列を分割したサブストリングを返します。
・文字列は「区切り文字とトークンが交互に連続する文字列」として解釈。
・文字列がabc-defgh-i-jklで区切り文字が「-」の場合、「abc」「defgh」「i」「jlk」がトークン(トークン 1 からトークン 4 )
・SPLIT はトークン数に対応するトークンを返します。
・トークン数が正の場合トークンは文字列の左端から、トークン数が負の場合トークンは文字列の右からカウントされます。

SPLIT( 文字列全体 , 区切り文字, 何番目?) なので、この場合

SPLIT( "ツナ・いくら・たらこ", "・",  2 )  → いくら
SPLIT( "ツナ・いくら・たらこ", "・", -1 )  → たらこ
SPLIT( "ツナ・いくら・たらこ", "&",  1 )  → ツナ・いくら・たらこ
SPLIT( "ツナ・いくら・たらこ", "・",  5 )  →     (表示なし)

ISNULL( SPLIT( "ツナ・いくら・たらこ", "・", 5 ) ) → false (not NULL)

  • 文字列全体にdelimiterが含まれなければ、分割されない

  • 分割されたトークンより token number が大きい場合、対象なし

TRIM

TRIM(string)
・先頭と末尾の空白を削除した文字列を返します。

STARTSWITH

STARTSWITH(string, substring)
・string が substring で始まる場合、true を返します。
・行頭の空白は無視されます。

STARTSWITH( "たまごかけごはん", "たまご" )  → false??なんで?
STARTSWITH( "たまご", "たまご" )  → true
STARTSWITH( "egg tart", "egg" )  → true

日本語だとうまくいかない?たまごきらい?

ENDSWITH

ENDSWITH(string, substring)
・string が substring で終わる場合、true を返します。
・行末の空白は無視されます。

ENDSWITH( "egg tart", "tart" ) → true
ENDSWITH( "egg tart", "egg" ) → false
ENDSWITH( "たまごかけごはん", "ごはん" ) → true(!)

こっちは日本語でもうまくいくらしい・・・

CONTAINS

CONTAINS(string, substring)
・string に substring が含まれている場合、true を返します。

CONTAINS( "ローストビーフ丼", "丼" )   → true
CONTAINS( "ローストビーフ丼", "ビーフ" ) → true
CONTAINS( "ローストビーフ丼", "ポーク" ) → false

おまけ

英語苦手でとにかく日本語頼りなんですが、引数とか英語で見たほうがわかりやすい。翻訳むつかしいのかな。

参考(公式)

https://help.tableau.com/current/pro/desktop/ja-jp/functions_functions_string.htm


いいなと思ったら応援しよう!