日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

運算符

運算符是構建SQL語句的關鍵,使得您可以執行復雜的數據檢索和操作任務,幫助您實現更有效率的數據處理、條件判斷或其他操作。本文為您介紹MaxCompute支持的運算符,包括運算符的格式、含義和使用示例。

MaxCompute支持的運算符如下。

運算符類型

說明

關系運算符

用于比較運算。

字符操作符

用于字符串連接操作。

算術運算符

用于各類數值運算。

位運算符

用于按照二進制位進行運算。

邏輯運算符

用于多條件連接,一般用于連接BOOLEAN類型的表達式或者值。

關系運算符

運算符

說明

A=B

  • A或B為NULL,返回NULL。

  • A等于B,返回TRUE,否則返回FALSE。

A<=>B

  • A和B都為NULL,返回TRUE。

  • A和B其中一個為NULL,返回FALSE。

  • 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 RLIKE BA REGEXP B效果相同。

A IN B

  • B為一個集合,如果A在B中,返回TRUE,否則返回FALSE。

  • 如果A為NULL,返回NULL。

  • B必須是常數集合且至少包含一個項,且所有項的數據類型需要一致。

BETWEEN AND

表達式為A [NOT] BETWEEN B AND C

  • A、B或C為NULL,則為空。

  • A大于等于B且小于等于C,返回TRUE,否則返回FALSE。

IS [NOT] DISTINCT FROM

表達式為A IS [NOT] DISTINCT FROM 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%';

在執行部分關系運算之前,您首先需要進行類型轉換,否則可能返回NULL,詳情請參見數據類型轉換

由于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位有效數字。

  • 比較STRING和BIGINT類型數值時,兩個類型都將自動轉換為DOUBLE類型,在比較過程中可能出現精度丟失現象。您可以通過CAST STRING AS BIGINT方式將STRING類型轉換為BIGINT類型后再比較。

字符操作符

字符操作符

說明

A||B

字符串連接操作符。例如a||b||c相當于CONCAT(a, b, c)。

算術運算符

運算符

說明

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。

A DIV B

A或B為NULL,返回NULL,否則返回A DIV B的結果。

常見用法如下。

SELECT age+10, age-10, age%10, -age, age*age, age/10, age div 10 FROM user;
說明
  • STRING、BIGINT、DOUBLE和TIMESTAMP_NTZ類型的參數支持參與算術運算,日期和布爾類型不允許參與運算。關于TIMESTAMP_NTZ數據類型詳情,請參見MaxCompute TIMESTAMP_NTZ數據類型

  • STRING類型在參與運算前會隱式轉換為DOUBLE類型。

  • BIGINT和DOUBLE類型共同參與計算時,系統會將BIGINT類型隱式轉換為DOUBLE類型再進行計算,返回結果為DOUBLE類型。

  • A和B都是BIGINT類型,執行A/B運算,返回結果為DOUBLE類型。執行上述其他運算,返回BIGINT類型。

位運算符

運算符

示例

說明

  • BITAND

  • &

  • BITAND(A,B)

  • A&B

返回A和B進行按位與運算的結果。例如1&2返回0,BITAND(1,3)返回1,NULL和任何值按位與運算都為NULL。A和B必須為BIGINT類型。

  • BITOR

  • |

  • BITOR(A,B)

  • A|B

返回A和B進行按位或運算的結果。例如1|2返回3,BITOR(1,3)返回3,NULL和任何值按位或運算都為NULL。A和B必須為BIGINT類型。

  • BITNOT

  • ~

  • BITNOT(A)

  • ~A

返回A按位非運算的結果。例如~1返回-2,BITNOT(7)返回-8,NULL值按位非運算都為NULL。A必須為BIGINT類型。

  • BITXOR

  • ^

  • BITXOR(A,B)

  • A^B

返回A和B進行按位異或運算的結果。例如1^2返回3,BITXOR(4,5)返回1,NULL和任何值按位異或運算都為NULL。A和B必須為BIGINT類型。

說明

位運算符不支持隱式轉換,只允許BIGINT類型參與運算。

邏輯運算符

運算符

說明

A and B

TRUE and TRUE=TRUE

TRUE and FALSE=FALSE

FALSE and TRUE=FALSE

FALSE and FALSE=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 FALSE=FALSE

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

運算符優先級

不同運算符的優先級如下表所示,從上到下優先級遞減。相同優先級默認是從左到右進行計算。

運算符

優先級

IS (NOT) NULL

1

^

2

*、/、%、DIV

3

+、-

4

||

5

&

6

|

7

(NOT) LIKE、 (NOT) RLIKE、=、==、IS (NOT) DISTINCT FROM、<>、!=、<=、<、>=、>

8

(NOT) IN、 (NOT) BETWEEN AND

9

NOT

10

AND

11

OR

12

如果某些運算要優先處理,需要添加英文括號。運算優先級示例如下。

a=1 and b=1 or c=1        --先計算a和b,再計算c。
a=1 and (b=1 or c=1)      --先計算b和c,再計算a。