2017-04-25 78 views
1

我正在使用Hive(Hadoop)編寫類似SQL的語句。正則表達式刪除字符串中的單詞之間的空格

我需要刪除字段中的空格。例如,郵政編碼可能是XX00 0XX,我想之前0XX

刪除空間到目前爲止,我有這樣的正則表達式:

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

但它似乎並沒有工作。任何人都可以建議嗎?

+1

如果您在刪除*常規空格*和'REGEXP_REPLACE'後工作,您只需要'REGEXP_REPLACE(postcode,'+','')' –

回答

1

只是做一個簡單的(非正則表達式)替換會有什麼問題嗎?試試這個:

REPLACE(postcode, ' ', '') 

如果您version of Hive不支持REPLACE(),那麼你可以使用:

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

感謝您的回覆 - 很遺憾,REPLACE不是一個有效的函數Hive :( – Kieran

+0

@Kieran你使用的是什麼版本的Hive? –

+0

謝謝你的第二個完美:)有一個美好的一天 – 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

取代

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

(如蜂房1.3.0和2.1.0的)。

相關問題