HiveQL 相当于 MySQL 的 TRUNCATE()?

Posted

技术标签:

【中文标题】HiveQL 相当于 MySQL 的 TRUNCATE()?【英文标题】:HiveQL equivalent of MySQL's TRUNCATE()? 【发布时间】:2020-02-07 20:49:48 【问题描述】:

什么是 mysqlTRUNCATE() 的 HiveQL 等效项?

在 MySQL 中:

mysql> SELECT TRUNCATE(2.465, 1);
+-------------------+
| TRUNCATE(2.465,1) |
+-------------------+
|               2.4 | 
+-------------------+

我只知道 HiveQL 的 ROUND(),但是,我不希望发生任何舍入。

参考:https://www.w3resource.com/mysql/mathematical-functions/mysql-truncate-function.php

【问题讨论】:

你可以试试splitsubstring_index:***.com/questions/46180835/… 【参考方案1】:

可能有点复杂,但是:

floor(2.465 * 10) / 10

【讨论】:

【参考方案2】:

使用 regexp_extract:

select regexp_extract(2.456,'\\d+\\.?\\d?',0)

结果:

2.4

\\d+ 表示一位或多位数字, \\.? 表示零或一个点, \\d? 表示零或一位数

您可能还想在正则表达式开头添加- 符号:-?

结果是字符串类型。如有必要,您可以强制转换为浮动:

select cast(regexp_extract(2.456,'\\d+\\.?\\d?',0) as float)

【讨论】:

以上是关于HiveQL 相当于 MySQL 的 TRUNCATE()?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 到 HiveQL 转换中的错误,包括 DATE_SUB 和 INTERVAL

Mysql基本命令一

关于MySQL的CRUD操作

mysql的基本操作,如删,修改表

批处理*.bat 执行mysql语句怎么写

多个连接的 HiveQL 查询