李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
大数据
正文
09.Hive类型转换
Leefs
2021-12-03 PM
4699℃
0条
[TOC] ### 一、概念 Hive 的原子数据类型是可以进行隐式转换的,类似于Java的类型转换,例如某表达式使用INT类型,TINYINT会自动转换为INT类型,但是Hive不会进行反向转化,例如,某表达式使用TINYINT类型,INT不会自动转换为TINYINT类型,它会返回错误,除非使用CAST操作。 ### 二、隐式转换图表  **图表说明** (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
工具
35
其它
25
GO
48
NLP
8
标签云
Spark Core
JVM
DataX
Java工具类
Beego
SpringCloudAlibaba
Eclipse
二叉树
Nacos
Filter
并发线程
JavaWeb
Hadoop
设计模式
Elasticsearch
容器深入研究
Yarn
Ubuntu
字符串
ajax
Git
Netty
并发编程
数学
Http
数据结构
Azkaban
Spark RDD
稀疏数组
GET和POST
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞