下面的查询输出1642575.0
。但我只想要 1642575
(只是没有小数点和后面的零的数字)。字段中分隔值的数量各不相同。唯一不变的是始终只有一个带小数的数字。我试图编写一个正则表达式函数来提取 "
和 .
之间的数字。
如何修改 regexp_extract 函数以获得所需的输出?谢谢!
select regexp_extract('{"1244644": "1642575.0", "1338410": "1650435"}','([1-9][0-9]*[.][0-9] +)&*');
最佳答案
您可以将结果转换为 bigint
。
select cast(regexp_extract('{"1244644": "1642575.9", "1338410": "1650435"}','([1-9][0-9]*[.][0-9]+)&*') as bigint) col;
output - 1642575
如果你想四舍五入,可以使用round。
select round(regexp_extract('{"1244644": "1642575.9", "1338410": "1650435"}','([1-9][0-9]*[.][0-9]+)&*')) col;
output - 1642576
关于sql - 在 Hive SQL 中提取两个字符之间的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66897820/