关系操作符
常见用法如下所示:
- select * from user where user_id = '0001';
- select * from user where user_name <> 'maggie';
- select * from user where age > ‘50’;
- select * from user where birth_day >= '1980-01-01 00:00:00';
- select * from user where is_female is null;
- select * from user where is_female is not null;
- select * from user where user_id in (0001,0010);
- select * from user where user_name like 'M%';
由于 double 值存在一定的精度差,因此,不建议您直接使用等号对两个 double 类型的数据进行比较。您可以使用两个 double 类型相减,然后取绝对值的方式进行判断。当绝对值足够小时,认为两个 double 数值相等,示例如下:
- abs(0.9999999999 - 1.0000000000) < 0.000000001
- -- 0.9999999999和1.0000000000为10位精度,而0.000000001为9位精度。
- -- 此时可以认为0.9999999999和1.0000000000相等。
注意:
ABS 是 MaxCompute 提供的内建函数,意为取绝对值,详情请参见 ABS。
通常情况下,MaxCompute 的 double 类型能够保障 14 位有效数字。
算术操作符
常见用法如下:
- select age+10, age-10, age%10, -age, age*age, age/10
- from user;
注意:
只有 string,bigint,double 才能参与算术运算,日期型和布尔型不允许参与运算。
string 类型在参与运算前会进行隐式类型转换,转换为 double 类型。
bigint 和 double 共同参与计算时,会将 bigint 隐式转换为 double 再进行计算,返回结果为 double 类型。
A 和 B 都是 bigint 类型,进行 A/B 运算,返回结果为 double 类型。进行上述其他运算,仍然返回 bigint 类型。
位操作符
注意:
位运算符不支持隐式转换,只允许 bigint 类型。
逻辑操作符
- 操作符 说明
- A and B TRUE and TRUE=TRUE
- TRUE and FALSE=FALSE
- FALSE and TRUE=FALSE
- FALSE and NULL=FALSE
- NULL and FALSE=FALSE
- TRUE and NULL=NULL
- NULL and TRUE=NULL
- NULL and NULL=NULL
- A or B TRUE or TRUE=TRUE
- TRUE or FALSE=TRUE
- FALSE or TRUE=TRUE
- FALSE or NULL=NULL
- NULL or FALSE=NULL
- TRUE or NULL=TRUE
- NULL or TRUE=TRUE
- NULL or NULL=NULL
- NOT A 如果A是NULL,返回NULL
- 如果A是TRUE,返回FALSE
- 如果A是FALSE,返回TRUE
注意:
逻辑操作符只允许 boolean 类型参与运算,不支持隐式类型转换。