MaxCompute 1.0数据类型版本是MaxCompute三种数据类型版本之一,该数据类型版本仅支持1.0数据类型。本文为您介绍1.0数据类型版本的设置方法、支持的数据类型以及与其它数据类型版本的差异。
定义
项目空间选择数据类型版本为1.0数据类型版本时,项目的数据类型属性定义如下。
setproject odps.sql.type.system.odps2=false; --关闭MaxCompute 2.0数据类型。
setproject odps.sql.decimal.odps2=false; --关闭Decimal 2.0数据类型。
setproject odps.sql.hive.compatible=false; --关闭Hive兼容模式。适用场景
适用于早期的MaxCompute项目,且该项目依赖的产品组件不支持2.0数据类型版本。
数据类型
| 类型 | 常量示例 | 描述 | 
| BIGINT | 100000000000L、-1L | 64位有符号整型。 取值范围:-263+1~263-1。 | 
| DOUBLE | 3.14159261E+7 | 64位二进制浮点型。 | 
| DECIMAL | 3.5BD、99999999999.9999999BD | 10进制精确数字类型。默认为 | 
| STRING | "abc"、'bcd'、"alibaba"、'inc' | 字符串类型。 长度限制为8 MB。 | 
| DATETIME | DATETIME'2017-11-11 00:00:00' | 日期时间类型。 取值范围:0000年1月1日~9999年12月31日。 | 
| BOOLEAN | True、False | BOOLEAN类型。 取值范围:True或False。 | 
数据类型说明如下:
- 上述数据类型均可以为NULL。 
- 整型常量的语义默认为BIGINT类型。如果常量超过了BIGINT的值域(例如1,000,000,000,000,000,000,000,000),会被作为DOUBLE类型处理。例如 - SELECT 1 + a;中的整型常量1会被作为BIGINT类型处理。
- 如果参数涉及2.0数据类型的内置函数,无法在1.0数据类型版本正常使用。 
- 分区表的分区列的数据类型只支持STRING类型。 
- 支持连接STRING常量。例如,abc和xyz会解析为abcxyz。 
- 向DECIMAL字段插入常量时,常量的写法需要与常量定义中的格式保持一致。例如示例代码中的 - 3.5BD。- INSERT INTO test_tb(a) VALUES (3.5BD);
- DATETIME查询显示的时间值不包含毫秒。Tunnel通过 - -dfp指定时间格式,可以指定显示到毫秒,例如- tunnel upload -dfp 'yyyy-MM-dd HH:mm:ss.SSS'。Tunnel详情请参见Tunnel命令参考。
与其它数据类型版本差异说明
- 1.0数据类型版本的LIMIT、ORDER BY、DISTRIBUTE BY、SORT BY和CLUSTER BY操作与2.0数据类型版本不同。 - 例如,LIMIT操作语句 - SELECT * FROM t1 UNION ALL SELECT * FROM t2 LIMIT 10;:- 1.0数据类型版本: - SELECT * FROM t1 UNION ALL SELECT * FROM ( SELECT * FROM t2 LIMIT 10) t2;。
- 2.0数据类型版本: - SELECT * FROM (SELECT * FROM t1 UNION ALL SELECT * FROM t2 ) t LIMIT 10;。
 
- 1.0数据类型版本的IN表达式与2.0数据类型版本不同。 - 例如 - a IN (1, 2, 3):- 1.0数据类型版本:IN括号里的所有值类型必须一致。 
- 2.0数据类型版本:IN括号里的所有值支持通过隐式类型转换为一致类型。 
 
复杂数据类型
| 类型 | 定义方法 | 构造方法 | 
| ARRAY | 
 | 
 | 
| MAP | 
 | 
 | 
| STRUCT | 
 | 
 |