全部产品
MaxCompute

运算符

更新时间:2017-06-07 13:26:11   分享:   

操作符 说明
A=B 如果A或B为NULL,返回NULL;如果A等于B,返回TRUE,否则返回FALSE
A<>B 如果A或B为NULL,返回NULL;如果A不等于B,返回TRUE,否则返回FALSE
A<B 如果A或B为NULL,返回NULL;如果A小于B,返回TRUE,否则返回FALSE
A<=B 如果A或B为NULL,返回NULL;如果A小于等于B,返回TRUE,否则返回FALSE
A>B 如果A或B为NULL,返回NULL;如果A大于B,返回TRUE,否则返回FALSE
A>=B 如果A或B为NULL,返回NULL;如果A大于等于B,返回TRUE,否则返回FALSE
A IS NULL 如果A为NULL,返回TRUE,否则返回FALSE
A IS NOT NULL 如果A不为NULL,返回TRUE,否则返回FALSE
A LIKE B 如果A或B为NULL,返回NULL,A为字符串,B为要匹配的模式, 如果匹配,返回TRUE,否则返回FALSE。'%'匹配任意多个字符,'_'匹配单个字符。要匹配'%'或’_’需要用转义符表示’\%’,’\_’。
  • ‘aaa’ like ‘a__’ = TRUE ‘aaa’ like ‘a%’ = TRUE‘aaa’ like ‘aab’ = FALSE ‘a%b’ like ‘a\%b’ = TRUE ‘axb’ like ‘a\%b’ = FALSE
A RLIKE B A是字符串,B是字符串常量正则表达式; 如果匹配成功,返回TRUE,否则返回FALSE; 如果B为空串会报错退出;如果A或B为NULL,返回NULL;
A IN B B是一个集合,如果A为NULL,返回NULL,如A在B中则返回TRUE,否则返回FALSE 若B仅有一个元素NULL,即A IN (NULL),则返回NULL。 若B含有NULL元素,将NULL视为B集合中其他元素的类型。 B必须是常数并且至少有一项,所有类型要一致

常见用法如下:

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是ODPS提供的内建函数,意为取绝对值,详细可参考 ABS
  • 通常情况下,ODPS的double类型能够保障14位有效数字。

算术操作符

操作符 说明
A + B 如果A或B为NULL,返回NULL;否则返回A + B的结果。
A – B 如果A或B为NULL,返回NULL;否则返回A – B的结果。
A * B 如果A或B为NULL,返回NULL;否则返回A * B的结果。
A / B 如果A或B为NULL,返回NULL;否则返回A / B的结果。注:如果A和B为bigint类型,返回结果为double类型。
A % B 如果A或B为NULL,返回NULL;否则返回A模B的结果。
+A 仍然返回A。
-A 如果A为NULL,返回NULL,否则返回-A。

常见用法如下:

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类型。

位操作符

操作符 说明
A & B 返回A与B进行按位与的结果。例如:1&2返回0,1&3返回1,NULL与任何值按位与都为NULL。 A和B必须为Bigint类型。
A | B 返回A与B进行按位或的结果。例如:1 |2返回3,1 |3返回3,NULL与任何值按位或都为NULL。 A和B 必须为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类型参与运算,不支持隐式类型转换。
本文导读目录
本文导读目录
以上内容是否对您有帮助?