2017-04-25 30 views
1

私はHive(Hadoop)を使ってSQLのような文を書いています。文字列内の単語間の空白を取り除く正規表​​現

フィールド内のスペースを削除する必要があります。例えば、郵便番号はXX00 0XX可能性があり、私はこれまでのところ0XX

の前にスペースを削除したい、私はこの正規表現があります。

REGEXP_REPLACE(postcode, '[[:space:]]*', '') 

をしかし、動作するようには思えません。誰も助言することはできますか?

+1

* REGESP_REPLACEが正常に機能していれば、 'REGEXP_REPLACE(postcode、 '+'、 '')'が必要です –

答えて

1

単純な(正規表現でない)置き換えに何か問題はありますか?あなたのversion of Hiveは、あなたが使用することができ、REPLACE()をサポートしていない場合は

REPLACE(postcode, ' ', '') 

:これを試してみてください

REGEXP_REPLACE(postcode, '\\s+', '') 
+0

あなたの応答に感謝します - 悲しいことにREPLACEは有効な機能ではありませんHive :( – Kieran

+0

@Kieran Hiveのバージョンはあなたが使っていますか –

+0

これはありがとう、もう1つは完璧に働いています:)素晴らしい一日を持って – Kieran

0

あなたは '[[]:空白] *' しようとしました、これはキャプチャしますよう ケアタブも同様です。

+1

間違った正規表現の方言 –

0

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

翻訳

select translate('XX00 0XX',' ','') 

REGEXP_REPLACE

select regexp_replace('XX00 0XX',' ',''); 
select regexp_replace('XX00 0XX','\\s',''); 
select regexp_replace('XX00 0XX','\\p{Blank}',''); 
select regexp_replace('XX00 0XX','\\p{Space}',''); 
select regexp_replace('XX00 0XX','\\p{javaWhitespace}',''); 

https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

は(ハイブ1.3.0及び2.1.0のような)

select replace ('XX00 0XX',' ','') 

を置き換えます。

関連する問題