Impala 数值函数大全(转载)

本文介绍Impala SQL中常用的字符串操作、数学运算及聚合函数等,包括字符串截取、类型转换、最大最小值计算、四舍五入、模糊查询等功能,并提供了具体的SQL语句示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  官网:https://www.cloudera.com/documentation/enterprise/latest/topics/impala_math_functions.html

  转载链接1:https://blog.youkuaiyun.com/qq_24699959/article/details/79863664

  转载链接2:https://blog.youkuaiyun.com/qq_24699959/article/details/80090050

  Impala SQL 语言元素(翻译)https://my.oschina.net/weiqingbin/blog/189413#OSC_h2_2

  Impala数据类型:https://blog.youkuaiyun.com/yidu_fanchen/article/details/78295499

 

  1、字符串截取substr,从1开始,而不是0;注意一个汉字长度是3

    select brand,substr(brand,1,6) from dw_bill_his limit 10;

    

  2、cast函数

    cast(expr AS type), 类型转换函数, 比如将number转成string, 或相反. 

    select cast(length as int) len from dw_bill_his where length != '无' and startdate='2018-09-01' order by cast(length as int);

  3、max,min,avg函数:length字段是字符串类型

    select max(cast(length as int)) len from dw_bill_his where length!='无' and startdate='2018-09-01';

    select min(cast(length as int)) len from dw_bill_his where length!='无' and startdate='2018-09-01';

    select avg(cast(length as int)) len from dw_bill_his where length!='无' and startdate='2018-09-01';

  4、截取数值,四舍五入

    select dround(2.14123,3) result;

    

    select dround(2.14123,2) result;

    

    取整

    select dround(2.14123) result;

    

 

  5、删除所有小数点以后的数或删除N位小数

    select truncate(3.45);

    

    

    select truncate(3.456,1)

    

  6、返回表达式列表中的最大值:greatest

     select greatest(5,16,2) as greatest;

    

  7、返回表达式列表中的最小值: least

     select least(5,16,2) as least;

    

  8、like 模糊查询

    select count(*) from  dw_bill_his where city='北京' and broadcastdate like '2018/03%';

     

  9、字符串截取,substr(str,startindex,length) startindex从1开始

    select substr('2018-08-20',1,4) year1;

    

  10、字符串连接 concat(string a,string b…)

    拼接多个字符串

    --连接hello和world两个字符串
    select concat('hello','world') as concat
    

    

  

    concat_ws(string sep,string a,string b…)

    拼接多个字符串,由指定分隔符分割

    --通过'-'连接两个字符串
    select concat_ws('-','hello','world') as concat_ws;

     

  11、字符串长度 length(string a)

    select length('world') as len;

    

  12、给表增加一列:

    ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])

    比如给表dw_bill增加一个float类型的week列

    ALTER TABLE dw_bill ADD COLUMNS(week FLOAT);

  13、删除一列

    ALTER TABLE name DROP [COLUMN] column_name
    比如删除dw_bill的week列表

    ALTER TABLE dw_bill DROP week;

  14、字符串去空格

    去左空格:  select ltrim(' hello ');

    去右空格:  select rtrim(' hello ');

    去左右空格:  select trim(' hello ');

  15、查询某个字段为null的记录条数

    select count(1) from dw_bill where brand is  null;

    不为null的记录条数

    select count(1) from dw_bill where brand is  not null;

 

 

 
### Impala 数值类型支持与用法 Impala 支持多种数值类型,这些类型可以用于存储和处理各种数值数据。以下是 Impala 中常见的数值类型及其用法: #### 1. 整数类型 Impala 支持以下整数类型[^3]: - **TINYINT**:1 字节有符号整数,范围为 -128 到 127。 - **SMALLINT**:2 字节有符号整数,范围为 -32,768 到 32,767。 - **INT** 或 **INTEGER**:4 字节有符号整数,范围为 -2,147,483,648 到 2,147,483,647。 - **BIGINT**:8 字节有符号整数,范围为 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。 这些类型适用于需要精确存储整数值的场景。选择合适的类型可以优化存储空间和性能。 #### 2. 浮点数类型 Impala 支持以下浮点数类型: - **FLOAT**:单精度浮点数,占用 4 字节。 - **DOUBLE** 或 **DOUBLE PRECISION**:双精度浮点数,占用 8 字节。 浮点数类型适用于需要表示小数或科学计数法的场景。需要注意的是,浮点数可能会引入精度误差,因此在对精度要较高的场景中,建议使用 `DECIMAL` 类型。 #### 3. 十进制类型(DECIMAL) Impala 的 `DECIMAL` 类型用于高精度的数值计算[^4]。其定义如下: ```sql DECIMAL(precision, scale) ``` - **precision**:总位数(包括小数点前后的所有数字),最大值为 38。 - **scale**:小数点后位数,最大值为 38。 例如,`DECIMAL(10, 2)` 表示总共 10 位数字,其中小数点后有 2 位。这种类型非常适合金融计算等需要高精度的场景。 #### 4. 数据类型转换 在某些情况下,可能需要将一种数值类型转换为另一种类型。Impala 提供了 `CAST` 函数来实现这一需[^4]。例如: ```sql SELECT CAST(column_name AS DECIMAL(10, 2)) FROM table_name; ``` 上述语句将 `column_name` 的数据类型转换为 `DECIMAL(10, 2)`。类似的,也可以将数值类型转换为字符串或其他类型: ```sql SELECT CAST(column_name AS STRING) FROM table_name; ``` #### 5. 注意事项 - 如果目标列的数据类型为 `VARCHAR` 并且未显式使用 `CAST` 进行转换,在执行批量插入操作时可能会遇到意外的空格填充现象[^2]。 - 在进行复杂数据类型(如 `ARRAY`、`MAP`、`STRUCT`)的处理时,Impala 的支持并不完全,通常需要将复杂类型转换为基本类型。 ### 示例代码 以下是一个简单的示例,展示如何在 Impala 中使用数值类型并进行类型转换: ```sql -- 创建一个包含不同数值类型的表 CREATE TABLE example_table ( id INT, value_decimal DECIMAL(10, 2), value_float FLOAT, value_double DOUBLE ); -- 插入数据 INSERT INTO example_table VALUES (1, 123.45, 123.456, 123.456); -- 查询并进行类型转换 SELECT id, value_decimal, CAST(value_float AS DECIMAL(10, 2)) AS converted_float, CAST(value_double AS STRING) AS string_double FROM example_table; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值