如何削减Hive中的前导零

时间:2016-08-12 09:31:52

标签: sql hadoop hive

如何在Hive中修剪前导零,我在谷歌搜索太多但我没有得到任何对我的问题有用的正确的东西。

如果数字为“00000012300234”,则需要“12300234”

之类的结果

3 个答案:

答案 0 :(得分:4)

您可以使用:regexp_replace first pic

来实现这一目标

regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT)

以下删除前导零,但如果需要则留下一个(即它不会只是将“0”变为空白字符串)。

hive> SELECT regexp_replace( "00000012300234","^0+(?!$)","") ;
OK
12300234
Time taken: 0.156 seconds, Fetched: 1 row(s)

hive> SELECT regexp_replace( "000000","^0+(?!$)","") ;
OK
0
Time taken: 0.157 seconds, Fetched: 1 row(s)

hive> SELECT regexp_replace( "0","^0+(?!$)","") ;
OK
0
Time taken: 0.12 seconds, Fetched: 1 row(s)

或者使用CAST - 将int转换为字符串:

hive> SELECT CAST(CAST( "00000012300234"  AS INT) as string);
OK
12300234
Time taken: 0.115 seconds, Fetched: 1 row(s)

hive> SELECT CAST( "00000012300234"  AS INT);
OK
12300234
Time taken: 0.379 seconds, Fetched: 1 row(s)
hive> 

答案 1 :(得分:-1)

无需做什么只是在INT

中强制转换字符串
SELECT CAST( "00000012300234"  AS INT);

它将返回 12300234

答案 2 :(得分:-2)

假设"00000012300234"是一个字符串,LTRIM('0', "00000012300234")将返回字符串"12300234"。它从字符串的左侧删除字符'0'RTRIM()在右侧执行相同的操作。