李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
大数据
正文
09.Hive类型转换
Leefs
2021-12-03 PM
3135℃
0条
[TOC] ### 一、概念 Hive 的原子数据类型是可以进行隐式转换的,类似于Java的类型转换,例如某表达式使用INT类型,TINYINT会自动转换为INT类型,但是Hive不会进行反向转化,例如,某表达式使用TINYINT类型,INT不会自动转换为TINYINT类型,它会返回错误,除非使用CAST操作。 ### 二、隐式转换图表 ![09.Hive类型转换01.png](https://lilinchao.com/usr/uploads/2021/12/1220917501.png) **图表说明** (1)`double、decimal、string、varchar`这四个基本能相互转换 , 除了decimal转double不行因为decimal比double大相当于double与float; (2)基本所有类型都能转为String与varchar; ### 二、隐式类型转换规则 (1)任何整数类型都可以隐式地转换为一个范围更广的类型,如TINYINT可以转换成INT,INT可以转换成BIGINT。 (2)所有整数类型、FLOAT 和 STRING 类型都可以隐式地转换成 DOUBLE。 (3)TINYINT、SMALLINT、INT 都可以转换为 FLOAT。 (4)BOOLEAN 类型不可以转换为任何其它的类型。 ### 三、使用CAST操作显示进行数据类型转换 例如CAST('1' AS INT)将把字符串'1'转换成整数1; 如果强制类型转换失败,如执行CAST('X' AS INT),表达式返回空值 NULL。 ```sql select '1'+2,cast('1' as int)+2 #运行结果 _c0 _c1 3.0 3 ``` + 对于BINARY类型的数据,只能将BINARY类型的数据转换成STRING类型。 如果你确信BINARY类型数据是一个数字类型(a number),这时候你可以利用嵌套的cast操作,比如a是一个BINARY,且它是一个数字类型,那么你可以用下面的查询 ```sql SELECT (cast(cast(a as string) as double)) from src; ``` + 对于Date类型的数据,只能在Date、Timestamp以及String之间进行转换。 | 转换类型 | 说明 | | ----------------------- | ------------------------------------------------------------ | | cast(date as date) | 返回date类型 | | cast(timestamp as date) | timestamp中的`年/月/日`的值是依赖与当地的时区,结果返回date类型 | | cast(string as date) | 如果string是`YYYY-MM-DD`格式的,则相应的`年/月/日`的date类型的数据将会返回;但如果string不是`YYYY-MM-DD`格式的,结果则会返回NULL | | cast(date as timestamp) | 基于当地的时区,生成一个对应date的`年/月/日`的时间戳值 | | cast(date as string) | date所代表的`年/月/日`时间将会转换成`YYYY-MM-DD`的字符串 |
标签:
Hadoop
,
Hive
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://www.lilinchao.com/archives/1710.html
上一篇
08.Hive数据类型
下一篇
10.Hive DDL数据定义
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
标签云
正则表达式
Java
并发线程
算法
Quartz
数据结构
MyBatis-Plus
Docker
Spark RDD
JVM
锁
Java工具类
设计模式
FileBeat
线程池
Ubuntu
Zookeeper
Netty
Flume
HDFS
Flink
VUE
Spark Core
Java编程思想
SpringCloudAlibaba
nginx
MyBatisX
JavaScript
GET和POST
Shiro
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞