php字符串类型转换数据类型有哪几种转换?怎么转换?

Hive数据类型转换 – 过往记忆
欢迎关注Hadoop、Hive、Hbase、Flume等微信公共账号:iteblog_hadoop。
文章总数:688
浏览总数:7,359,078
评论:3967
分类目录:80 个
注册用户数:1609
最后更新:日
欢迎关注微信公共帐号:iteblog_hadoop
  写在前面的话,学这么久了,发现目前国内还没有一本完整的介绍的书籍,而且互联网上面的资料很乱,于是我决定写一些关于序列文章,分享给大家。我会在接下来的时间整理有关Hive的资料,如果对Hive的东西感兴趣,请关注本博客。/archives/tag/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内置的数据类型之间是否可以进行隐式的转换操作:
  注:由于表格比较大,这里对一些比较长的字符串进行缩写,ts是timestamp的缩写,bl是boolean的缩写,sl是smallint的缩写,dm是decimal的缩写,vc是varchar的缩写,ba是binary的缩写。
  我们可以用CAST来显式的将一个类型的数据转换成另一个数据类型。如何使用?CAST的语法为cast(value AS TYPE)。举个例子:假如我们一个员工表employees,其中有name、salary等字段;salary是字符串类型的。有如下的查询:
SELECT name, salary FROM employees
WHERE cast(salary AS FLOAT) & ;
  这样salary将会显示的转换成float。如果salary是不能转换成float,这时候cast将会返回NULL!
  对cast有一下几点需要说明的:
  (1)、如果将浮点型的数据转换成int类型的,内部操作是通过round()或者floor()函数来实现的,而不是通过cast实现!
  (2)、对于BINARY类型的数据,只能将BINARY类型的数据转换成STRING类型。如果你确信BINARY类型数据是一个数字类型(a number),这时候你可以利用嵌套的cast操作,比如a是一个BINARY,且它是一个数字类型,那么你可以用下面的查询:
SELECT (cast(cast(a as string) as double))
我们也可以将一个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的字符串。
本博客文章除特别声明,全部都是原创!
禁止个人和公司转载本文、谢谢理解:
下面文章您可能感兴趣博客访问: 124751
博文数量: 40
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Linux
memcpy方法可以实现将int等保存到字符类型的数组中。示例:
long & &long_data=-9828;&& & unsigned char data[4];
memcpy(data,&t,4); //将long类型的数据用4个char保存。
long my_long_data=0;
memcpy(&tt,data,4);//从4个char中还原出long类型数据。一、int/long/float/double转字符串方法1:itoa, ltoa(a表示array数组的意思)头文件:stdlib.h示例:&&& int a = 3;&&& long b = 23;&&& char buf1[30] = "";&& &itoa(a, buf1, 10);//10表示十进制,buf1保存的内容为"3"&& &char buf2[30] = "";&& &ltoa(b, buf2, 10);//10表示十进制,buf2保存的内容为"32"方法2:sprintf头文件:stdio.h示例:&&& int a = 3;&& &float b = 4.2f;&& &char buf[30] = "";&& &sprintf(buf, "%d,%f", a, b);//buf保存的内容为"3,4.2",可对比printf方法3:ostringstream头文件:#include <sstream>示例:&&& int a = 3;&& &float b = 4.2f;&& &ostringstream s1;&& &s1<<a<<","<<b;//可对比cout&& &string s2 = s1.str();//s2保存的内容为"3,4.2"二、字符串转int/long/float/double方法1:atoi,atol,atof头文件:stdlib.h示例:int a = atoi("32");long b = atol("333");double c = atof("23.4");方法2:strtol, strtod头文件:stdlib.h示例:long b = strtol("333", NULL, 10);//10表示十进制double c = strtod("32.3", NULL);方法3:sscanf头文件:stdio.h示例:&&&&& &&& &sscanf("23 23.4", "%d %f", &a, &b);//对比scanf方法4:istringstream头文件:#include <sstream>示例:&&&&& &&& &istringstream s1("23 23.4");&& &s1>>a>>b;//对比cin
阅读(29033) | 评论(0) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。Java中数据类型及其之间的转换
Java中数据类型及其之间的转换
Java中数据类型及其之间的转换基本的数据类型基本类型有以下四种:1)int长度数据类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)、2)float长度数据类型有:单精度(32bits&float)、双精度(64bits&double),JAVA中将小数默认为double类型,若要定义float需在数据后面用f声明;3)boolean类型变量的取值有:ture、false4)char数据类型有:unicode字符,16位对应的类类型:Integer、Float、Boolean、Character、Double、Short、Byte、Long基本的数据类型由低级到高级分别为:(byte、short、char)——int——long——float——doublePS:此处的“级别”是指表示值的范围的大小。数据类型之间的转转换分为以下几种情况:1)低级到高级的自动类型转换;2)高级到低级的强制类型转换(会导致溢出或丢失精度);3)基本类型向类类型转换;4)基本类型向字符串的转换;5)类类型向字符串转换基本数据类型之间的转换规则1.在一个双操作数以及位运算等算术运算式中,会根据操作数的类型将低级的数据类型自动转换为高级的数据类型,分为以下几种情况:1)只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型;2)只要两个操作数中有一个是float类型的,另一个将会被转换成float类型,并且结果也是float类型;3)只要两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型;4)两个操作数(包括byte、short、int、char)都将会被转换成int类型,并且结果也是int类型。&&2.&如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,再做其它类型的自动转换。3.&对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。如:short&i=99&;char&c=(char)i;System.out.println("output:"+c);4.&不能在布尔值和任何数字类型间强制类型转换;5.&不同级别数据类型间的强制转换,可能会导致溢出或精度的下降。6.&当字节类型变量参与运算,java作自动数据运算类型的提升,将其转换为int类型。例如:byte&b;&&&&b=3;&&&&b=(byte)(b*3);//必须声明byte。包装数据类型与基本数据类型之间的转换简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(boolean&value)、Character(char&value)、Integer(int&value)、Long(long&value)、Float(float&value)、Double(double&value) 而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。1.字符串与其它类型间的转换⑴其它类型向字符串的转换①调用类的串转换方法:X.toString();②自动转换:X+“”;③使用String的方法:String.volueOf(X);⑵字符串作为值,向其它类型的转换①先转换成相应的封装器实例,再调用对应的方法转换成其它类型例如,字符中“32.1”转换double型的值的格式为:new&Float(“32.1”).doubleValue()。也可以用:Double.valueOf(“32.1”).doubleValue()②静态parseXXX方法String&s&=&"1";byte&b&=&Byte.parseByte(&s&);short&t&=&Short.parseShort(&s&);int&i&=&Integer.parseInt(&s&);long&l&=&Long.parseLong(&s&);Float&f&=&Float.parseFloat(&s&);Double&d&=&Double.parseDouble(&s&);③Character的getNumericValue(char&ch)方法具体可查阅api。转换实例1)基本类型向类类型转换正向转换:通过类包装器来new出一个新的类类型的变量Integer&a=&new&Integer(2);反向转换:通过类包装器来转换int&b=a.intValue();通过类包装器——&基本数据类型eg1:int&i=Integer.parseInt(“123”)说明:此方法只能适用于字符串转化成整型变量eg2:&float&f=Float.valueOf(“123”).floatValue()说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。eg3:&boolean&b=Boolean.valueOf(“123”).booleanValue()说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。eg4:double&d=Double.valueOf(“123”).doubleValue()说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。eg5:&long&l=Long.valueOf(“123”).longValue()说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。eg6:&char=Character.valueOf(“123”).charValue()说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。2)基本类型向字符串的转换正向转换:如下:System.out.println(""+2+3);//&“""”把2转成字符串操作;System.out.println(2+3);&&&//&不存在转换。System.out.println(2+3+"");//&前两个数值相加后,被“""”转成字符串。System.out.println(2+""+3);//&同第一个。输出显示为:23,5,5,233)类类型向字符串转换正向转换:因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可反向转换:通过类包装器new出一个新的类类型的变量eg1:&int&i=Integer.valueOf(“123”).intValue()说明:上例是将一个字符串转化成一个Integer对象,然后再调用这个对象的intValue()方法返回其对应的int数值。eg2:&float&f=Float.valueOf(“123”).floatValue()说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。eg3:&boolean&b=Boolean.valueOf(“123”).booleanValue()说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。eg4:double&d=Double.valueOf(“123”).doubleValue()说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。eg5:&long&l=Long.valueOf(“123”).longValue()说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。eg6:&char=Character.valueOf(“123”).charValue()说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。
发表评论:
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&

我要回帖

更多关于 js强制类型转换字符串 的文章

 

随机推荐