sql - 在 Hive SQL 中提取两个字符之间的数字

标签 sql regex hive hiveql numeric

下面的查询输出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/

相关文章:

Javascript 找不到我的 mod_rewrite 查询字符串!

regex - 如何修改此正则表达式以从 ls -a 输出中获取文件名?

optimization - Hive - 两个表的高效连接

sql - 优化 SQL 查询 - 连接 4 个表

mysql - 如何对这个相关子查询建模?

MySQL 触发器 STR_TO_DATE(NEW.invoice_date, '%d/%m/%Y')

c# - 在正则表达式匹配中保留换行符,c#

php - 将变量插入 MySQL 插入语句的正确方法

date - 在 Hive 中按周计数

java - 如何使用 Hive 从 hortonworks 中的 jdbc 程序创建表?