String 从hiveql中的字符串中删除最后一个字符

String 从hiveql中的字符串中删除最后一个字符,string,hive,hiveql,String,Hive,Hiveql,我需要有关Hive的帮助,我在Hive中尝试了很多功能,但我还不能完成我需要做的事情 请看以下示例: 3231220-9 我只需要保留所有东西,但不需要-9 请帮忙 如果只保留第一个连字符或其他非数字之前的数字,则: regexp_replace(myfield,'[^0-9].*','') 如果它始终是一个连字符,结尾处有一个字符: regexp_replace(myfield,'-.$','') 您还可以使用split(): hive> select split('3231220-

我需要有关Hive的帮助,我在Hive中尝试了很多功能,但我还不能完成我需要做的事情

请看以下示例: 3231220-9

我只需要保留所有东西,但不需要-9


请帮忙

如果只保留第一个连字符或其他非数字之前的数字,则:

regexp_replace(myfield,'[^0-9].*','')
如果它始终是一个连字符,结尾处有一个字符:

regexp_replace(myfield,'-.$','')
您还可以使用
split()

hive> select split('3231220-9','-')[0];
OK
3231220
Time taken: 3.994 seconds, Fetched: 1 row(s)
不是像split()函数那样优雅,但这也可以:

select substr('12345678-9', 1, instr('12345678-9','-')-1);
Result: 12345678

是否总是要删除“-9”?你能不能更精确地描述一下这些要求,再举几个例子?事实上,后面总是带一个字符的“-”…我会试试看!)