我希望使用配置單元「printf」功能,該功能從java formatter class上去掉諸如「1234」之類的字符串變成「1.2.34」 。或者,「4321」變成「4.3.21」等等。理想的情況是這樣的:使用hive printf格式化程序將「1234」變成「1.2.34」
SELECT PRINTF("x.x.xx", "4321");
// -> 4.3.21
這可能嗎?如果是這樣,格式字符串是什麼?
我知道我可以用字符串concat做同樣的事情,但寧願不要。我在配置單元中工作,「1234」是一個昂貴的正則表達式的結果,我希望一步到位,而不用三次運行正則表達式或使用子查詢。
編輯:只是爲了澄清,這是在蜂巢。對不起,沒有提前說清楚。
這是格式化程序需要做的唯一事情嗎?它總是4位數還是這裏有更多的邏輯?使用已知格式的字符串,您可以始終通過抓住特定索引處的字符並在其間插入點來構建您想要的字符串。 – Carl 2012-08-08 19:52:52
它總是4位數字。我知道我可以抓住索引並在它們之間插入點,但這需要計算三次原始字符串。如SUBSTR(REGEXP(...),0,1)|| 「」 || SUBSTR(REGEXP(...),1,1)|| 「」 || SUBSTR(REGEXP(...),2,2)。這是我的最後手段,只是試圖看看是否有更好的方法來做到這一點:) – vasek1 2012-08-08 19:55:09
您不能將結果存儲爲變量以便於訪問嗎?我對Hive一無所知,所以我很抱歉如果這是一個愚蠢的問題。 – Shaded 2012-08-08 19:56:07