hive数据类型转换cast_c语言数据类型的转换

hive数据类型转换cast_c语言数据类型的转换在《Hive内置数据类型》文章中,我们提到了Hive内置数据类型由基本数据类型和复杂数据类型组成。今天的话题是Hive数据类型之间的转换。同Java语言一样,Hive也包括隐式转换(implicitconversions)和显式转换(explicitlyconversions)。  Hive在需要的时候将会对numeric类型的数据进行隐式转换。比如我们对两个不同数据类型的数字进行比较

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

  在《Hive内置数据类型》文 章中,我们提到了Hive内置数据类型由基本数据类型和复杂数据类型组成。今天的话题是Hive数据类型之间的转换。同Java语言一样,Hive也包括 隐式转换(implicit conversions)和显式转换(explicitly conversions)。
  Hive在需要的时候将会对numeric类型的数据进行隐式转换。比如我们对两个不同数据类型的数字进行比较,假如一个数据类型是INT型,另一个 是SMALLINT类型,那么SMALLINT类型的数据将会被隐式转换地转换为INT类型,这个到底和Java中的一样;但是我们不能隐式地将一个 INT类型的数据转换成SMALLINT或TINYINT类型的数据,这将会返回错误,除非你使用了CAST操作。

  任何整数类型都可以隐式地转换成一个范围更大的类型。TINYINT,SMALLINT,INT,BIGINT,FLOAT和STRING都可以隐式 地转换成DOUBLE;是的你没看出,STRING也可以隐式地转换成DOUBLE!但是你要记住,BOOLEAN类型不能转换为其他任何数据类型!

  下标列出了Hive内置的数据类型之间是否可以进行隐式的转换操作:

  bl tinyint si int bigint float double dm string vc ts date ba
boolean true false false false false false false false false false false false false
tinyint false true true true true true true true true true false false false
smallint false false true true true true true true true true false false false
int false false false true true true true true true true false false false
bigint false false false false true true true true true true false false false
float false false false false false true true true true true false false false
double false false false false false false true true true true false false false
decimal false false false false false false false true true true false false false
string false false false false false false true true true true false false false
varchar false false false false false false true true true true false false false
ts false false false false false false false false true true true false false
date false false false false false false false false true true false true false
binary false false false false false false false false false false false false true
  注:由于表格比较大,这里对一些比较长的字符串进行缩写,ts是timestamp的缩写,bl是boolean的缩写,sl是smallint的缩写,dm是decimal的缩写,vc是varchar的缩写,ba是binary的缩写。

  我们可以用CAST来显式的将一个类型的数据转换成另一个数据类型。如何使用?CAST的语法为cast(value AS TYPE)。举个例子:假如我们一个员工表employees,其中有name、salary等字段;salary是字符串类型的。有如下的查询:

1 SELECT name, salary FROM employees
2 WHERE cast(salary AS FLOAT) <</code> 100000.0;

  这样salary将会显示的转换成float。如果salary是不能转换成float,这时候cast将会返回NULL!
  对cast有一下几点需要说明的:
  (1)、如果将浮点型的数据转换成int类型的,内部操作是通过round()或者floor()函数来实现的,而不是通过cast实现!
  (2)、对于BINARY类型的数据,只能将BINARY类型的数据转换成STRING类型。如果你确信BINARY类型数据是一个数字类型(a number),这时候你可以利用嵌套的cast操作,比如a是一个BINARY,且它是一个数字类型,那么你可以用下面的查询:

1 SELECT (cast(cast(a as string) as double)) from src;

我们也可以将一个String类型的数据转换成BINARY类型。
  (3)、对于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的字符串。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191107.html原文链接:https://javaforall.net

(0)
上一篇 2026年2月7日 下午6:43
下一篇 2026年2月7日 下午7:15


相关推荐

  • CentOS7安装详解

    CentOS7安装详解本文基于vmwareworkstations进行CentOS7安装过程展示,关于vmwareworkstations安装配置本人这里不再介绍,基本过程相当于windows下安装个软件而已。1、打

    2022年8月3日
    15
  • 使用 redis 连接指定端口的 redis 数据库

    使用 redis 连接指定端口的 redis 数据库

    2022年2月17日
    43
  • 如何提取微信公众号文章里边的视频地址[通俗易懂]

    1.首先,找到含视频的公众号文章,复制文章链接地址。2.在电脑端浏览器打开这个链接,在网页空白位置点击右键,然后点击“查看网页源代码”。3.在打开的源代码网页里Ctrl+F输入 v.qq.com(腾讯视频的都是以这个开头的),找到在src后面的链接。4. https://v.qq.com/x/page/*****.html,这个是腾讯视频网址的标准格式,把刚才复制的vid编号替换网址中的星号…

    2022年4月15日
    1.5K
  • 华为c++面试题和答案汇总_C语言经典笔试题

    华为c++面试题和答案汇总_C语言经典笔试题《几道华为经典C语言面试题》由会员分享,可在线阅读,更多相关《几道华为经典C语言面试题(6页珍藏版)》请在人人文库网上搜索。1、1、找错voidtest1()charstring10;char*str1=;strcpy(string,str1);这里string数组越界,因为字符串长度为10,还有一个结束符0。所以总共有11个字符长度。string数组大小为10,这里越界了。PS:使用st…

    2022年8月28日
    6
  • keytool条目_keytool的笔记

    keytool条目_keytool的笔记1 1 Keytool 是一个有效的安全钥匙和证书的管理工具 Java 中的 keytool exe 位于 JDK Bin 目录下 可以用来创建数字证书 所有的数字证书是以一条一条 采用别名区别 的形式存入证书库的中 证书库中的一条证书包含该条证书的私钥 公钥和对应的数字证书的信息 证书库中的一条证书可以导出数字证书文件 数字证书文件只包括主体信息和对应的公钥 Keytool 把钥匙和证书储存到

    2026年3月18日
    1
  • create table as select * from mysql_达梦数据库建表语句

    create table as select * from mysql_达梦数据库建表语句达梦数据库建表语句之createtableasselect注意事项

    2025年10月6日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号