【Hive】Hive / HiveQL ~ HiveQL関数・文字列関数編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/03/10/224640
https://dk521123.hatenablog.com/entry/2021/06/18/184713

の続き。

今回は、文字列操作する際の関数群をまとめておく。

目次

【0】API仕様
【1】lower() / lcase()
【2】upper() / ucase()
【3】trim() / ltrim() / rtrim()
【4】substr() / substring()
【5】concat() / concat_ws()
【6】regexp_extract()

【0】API仕様

String Functions
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-StringFunctions

【1】lower() / lcase()

* 小文字への変換

構文

lower(string A)
lcase(string A)

サンプル

hive > SELECT lower('fOoBaR');

OK
foobar

【2】upper() / ucase()

* 大文字への変換

構文

upper(string A)
ucase(string A)

サンプル

hive > SELECT upper('fOoBaR');

OK
FOOBAR

【3】trim() / ltrim() / rtrim()

* trim():ホワイトスペースの前後の除去
* ltrim():ホワイトスペースの前の除去(Left:左)
* rtrim():ホワイトスペースの後の除去(Right:右)

構文

trim(string A)
ltrim(string A)
rtrim(string A)

サンプル

hive > SELECT trim(' foobar '); -- 'foobar' (前後の空白を除去)
hive > SELECT ltrim(' foobar '); -- 'foobar ' (後ろ・左の空白を除去)
hive > SELECT rtrim(' foobar '); -- ' foobar' (前・右の空白を除去)

【4】substr() / substring()

文字列の切り出し

構文

-- [1]
substr(string|binary A, int start)
substring(string|binary A, int start)

-- [2]
substr(string|binary A, int start, int len)
substring(string|binary A, int start, int len)

使用上の注意

第二引数「start」は、0発進のインデックス番号じゃなく、
何文字目(1番目~)から開始するかを指定する。

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-StringFunctions

より抜粋
~~~~~
For example, substr('foobar', 4) results in 'bar'.
(see [http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substr]).
~~~~~

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substr
サンプル

hive > SELECT SUBSTRING('2021-06-21 10:12:23', 1, 10);

OK
2021-06-21

【5】concat() / concat_ws()

* concat() : 文字列の連結
* concat_ws() : 文字列の連結する際に区切り文字(SEP)でくっつける

構文

-- concat()
concat(string|binary A, string|binary B...)

-- concat_ws()
concat_ws(string SEP, string A, string B...)
concat_ws(string SEP, array<string>)

【6】regexp_extract()

* 正規表現による文字列抽出

構文

-- pattern を使用して抽出されたストリングを返す
-- 'index'は Java 正規表現 Matcher group() のインデックス
regexp_extract(
  string subject,
  string pattern,
  int index)

Java 正規表現 Matcher group()
https://docs.oracle.com/javase/jp/8/docs/api/java/util/regex/Matcher.html#group-int-

参考文献

https://open-groove.net/hive/hive-string-functions/

関連記事

Hive / HiveQL ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/25/231235
Hive / HiveQL ~ HiveQL関数 / 文字列置換編 ~
https://dk521123.hatenablog.com/entry/2020/03/10/224640
Hive / HiveQL ~ HiveQL関数・regexp_replace編 ~
https://dk521123.hatenablog.com/entry/2021/06/18/184713
Hive / HiveQL ~ HiveQL関数 / NULL関連編 ~
https://dk521123.hatenablog.com/entry/2021/06/22/213241
Hive / HiveQL ~ HiveQL関数 / 日時・日付操作編 ~
https://dk521123.hatenablog.com/entry/2021/02/11/233633
Hive / HiveQL ~ HiveQL / あれこれ編 ~
https://dk521123.hatenablog.com/entry/2020/03/04/225943
Hive / HiveQL ~ データをクリーニングする ~
https://dk521123.hatenablog.com/entry/2020/07/06/232350