今天的话题是 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 内置的数据类型之间是否可以进行隐式的转换操作:
- SELECT name, salary FROM employees
- WHERE cast(salary AS FLOAT) < 100000.0;
来源: http://www.jianshu.com/p/8f4bc29218ed