閱讀351 返回首頁    go 阿裏雲


運算符__SQL_大數據計算服務-阿裏雲

操作符 說明
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類型參與運算,不支持隱式類型轉換。

最後更新:2016-11-23 17:16:04

  上一篇:go SQL 概要__SQL_大數據計算服務-阿裏雲
  下一篇:go DDL語句__SQL_大數據計算服務-阿裏雲