Edited at

HiveとPrestoのTRIM関数の違い

More than 1 year has passed since last update.

文字列の空白を除去するTRIM関数で、HiveとPrestoに違いがあったのでメモ。

基本は半角スペースを除去。

SELECT TRIM(' a')

=> 'a'

では全角スペースは?

SELECT TRIM(' a')

Hive - 除去されない

Presto - 除去される。

PrestoのTrimは、 SliceUtf8.trimで実現されていて、ライブラリ独自の挙動みたいですね。

https://github.com/airlift/slice

HiveでPrestoのTRIMと動作を揃えるには、regexp_replaceをしないとだめかなー、というところですね。

SELECT regexp_replace(TRIM(' a '), '^ | $', '')

ryukoba-sanのコメントより複数全角空白を考慮した場合は下記。

SELECT regexp_replace(TRIM(' a '), '^ +| +$', '')

ちゃんちゃん。