隐式转换 小转大 显示转换 cast
cast(** AS TYPE) 如果不能转换,返回NULL
STRING也可以隐式地转换成DOUBLE!但是你要记住,BOOLEAN类型不能转换为其他任何数据类型!
左 往 右转换
| boolean | ||||||||
|---|---|---|---|---|---|---|---|---|
| tinyint | smallint | int | bigint | float | double | decimal | string | varchar | 
| 1byte | 2byte | 4byte | 8byte | 4byte精度 | 8byte精度 | - | - | - | 
| timestamp | date | |||||||
| binary | 
- 如果将浮点型的数据转换成int类型的,内部操作是通过round()或者floor()函数来实现的,而不是通过cast实现!
- 对于BINARY类型的数据,只能将BINARY类型的数据转换成STRING类型。如果你确信BINARY类型数据是一个数字类型(a number),这时候你可以利用嵌套的cast操作,比如a是一个BINARY,且它是一个数字类型,那么你可以用下面的查询:
SELECT (cast(cast(a as string) as double)) from src; 我们也可以将一个String类型的数据转换成BINARY类型。
- 对于Date类型的数据,只能在Date、Timestamp以及String之间进行转换
| 有效的转换 | 结果 | 
|---|---|
| cast(date as date) | 返回date类型 | 
| cast(timestamp as date) | |
| cast(string as date) | 如果不是YYYY--MM-DD格式返回NULL | 
| cast(date as timestamp) | |
| cast(date as string) | 返回YYYY-MM-DD格式 |