全部產品
Search
文件中心

PolarDB:運算子

更新時間:Jul 06, 2024

本文介紹了PolarDB-X支援的運算子。

邏輯運算子

PolarDB-X支援如下邏輯運算子:

運算子

描述

AND, &&

邏輯與

NOT, !

邏輯非

||, OR

邏輯或

XOR

邏輯異或

算術運算子

PolarDB-X支援如下算術運算子:

操作符

描述

/,DIV

除法

%,MOD

取餘

+

加法

*

乘法

-

減法

比較子

SELECT語句中的條件陳述式經常要使用比較子。通過這些比較子,可以判斷表中的哪些記錄是合格。比較結果為真,則返回1,為假則返回0,比較結果不確定則返回NULL。

PolarDB-X支援如下比較子:

函數名

描述​

=

等於

<>, !=

不等於

>

大於

<

小於

<=

小於等於

>=

大於等於

BETWEEN

在兩值之間

>=min&&<=max

NOT BETWEEN

不在兩值之間

IN

在集合中

NOT IN

不在集合中

<=>

比較兩個值是否相等,也可以比較NULL值

說明

兩個作業碼均為NULL時,其所得值為1;而當一個作業碼為NULL時,其所得值為0。

LIKE

模糊比對

REGEXP或RLIKE

正則式匹配

IS NULL

為空白

IS NOT NULL

不為空白

位元運算符

PolarDB-X支援如下位元運算符:

運算子

描述

&

與運算子

~

非運算子

l

或運算子

^

異或運算子

<<

左移運算子

>>

右移運算子

賦值運算子

PolarDB-X支援 '=' 賦值運算子,一般在UPDATE的SET部分出現。

PolarDB-X暫不支援 ':=' 賦值運算子。

運算子優先順序

PolarDB-X操作符的優先順序由高到低,如下所示:

優先順序

運算子

15

!

14

-(負號), ~

13

^

12

*,/,%,MOD

11

+,-

10

<<,>>

9

&

8

|

7

=(比較子等於),<=>,>,>=,<,<=,<>,!=,IS,LIKE,REGEXP,IN

6

BETWEEN

5

NOT

4

AND, &&

3

XOR

2

OR, ||

1

=(賦值運算子)

特殊說明

IN/NOT IN與=優先順序

在MySQL 5.7.19中執行如下SQL:

select binary 'a' = 'a' in (1, 2, 3);
+-------------------------------+
| binary 'a' = 'a' in (1, 2, 3) |
+-------------------------------+
|                             1 |
+-------------------------------+
1 row in set, 1 warning (0.01 sec)

show warnings;
+---------+------+---------------------------------------+
| Level   | Code | Message                               |
+---------+------+---------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'a' |
+---------+------+---------------------------------------+
1 row in set (0.00 sec)

select 1 in (1, 2, 3) = 'a';
+----------------------+
| 1 in (1, 2, 3) = 'a' |
+----------------------+
|                    0 |
+----------------------+
1 row in set, 1 warning (0.00 sec)

show warnings;
+---------+------+---------------------------------------+
| Level   | Code | Message                               |
+---------+------+---------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'a' |
+---------+------+---------------------------------------+
1 row in set (0.00 sec)
            

可見,在MySQL中,IN/NOT IN的優先順序高於=(比較子),在PolarDB-X中,嚴格按照以上優先順序實現,在優先順序相同的情況下,採用左結合的方式。