mysql數據庫中的運算符

    運算符是mysql執行特定算術或邏輯操作的符號,mysql的運算符主要有算術運算符、比較運算符、邏輯運算符、位操作運算符

1、算術運算符

運算符

作用

+

加法運算

-

減法運算

*

乘法運算

/

除法運算

%

求餘運算

# 對student表中的name爲”test_name”的sid進行算術運算
mysql> select sid,sid*2,sid/3,sid+100,sid-200,sid%3 from student where sname="test_name";
+-----+-------+---------+---------+---------+-------+
| sid | sid*2 | sid/3   | sid+100 | sid-200 | sid%3 |
+-----+-------+---------+---------+---------+-------+
| 100 |   200 | 33.3333 |     200 |    -100 |     1 |
+-----+-------+---------+---------+---------+-------+

2、比較運算符

    對比操作符用於比較字符串及數字之間的大小或值是否相等,對比操作符的執行結果爲true(1),false(0),null三種。

對比操作符

作用

舉例

Between A and B

值是否在A與B之間

select 4 between 0 and 5;

1

Not between A and B

檢查值是否不在A和B的範圍之內

select 4  not between 0 and 5

0

Coalesce()

返回第一個非空值

select coalesce(null,32);

32

=

相等操作符

select 'a'='a';

1

>

大於操作符

select 2>2;

0

>=

大於等於操作符

select 2>=2;

1

<

小於操作符

select 100<2;

o

<=

小於等於操作符

select 2<=2;

2

!=/<>

不等於操作符

select 3<>3;

0

Greatest()

返回最大的值

select greatest(12,02,3);

12

In()

檢查值是否在一系列的值之中

select 'dy' in('dy','root');

1

Interval()

返回比第一個參數小的參數的位置

select interval(0,32);

0

is/is not

檢查值是否與布爾值相同/不同

 

 

Is not null

檢查值是否是非NULL

select 'dy' is not null;

1

Is null

檢查值是否是NULL

select 'dy' is null;

0

Isnull()

檢查參數是NULL

SELECT ISNULL(1+1);

 

Least()

返回最小的參數

select least('a','b','c');

a

Not in()

檢查值是否不在一系列值的當中

select 3 not in(1,2,3);

0

Like

字符匹配

 

0

Not like

檢查值是否不匹配

 

 

Strcmp()

對比兩個字符串

select strcmp('g','c');

1

# 查看student表中sname以dayi開頭的數據
mysql> select sid,sname from student where sname like "dayi%";
+-----+---------+
| sid | sname   |
+-----+---------+
|   4 | dayi    |
|   5 | dayi123 |
+-----+---------+
# 查看student表中不包含”yi”的所有數據
mysql> select sid,sname from student where sname not like "%yi%";  
+-----+-----------+
| sid | sname     |
+-----+-----------+
|   3 | haha      |
|  10 | dy        |

3、邏輯操作符

         同對比操作符相同,邏輯運算符的結果也分爲true(1),false(0),null三種,主要的邏輯運算符如下:

運算符

作用

NOT 或者!

邏輯非

AND 或者 &&

邏輯與

OR 或者 ||

邏輯或

XOR

邏輯與或

# 邏輯非運算符,由於運算優先級不同,在某些情況下,not和”!”結果不一樣
mysql> select not 10,not (1-1),not -10,not null,not 1+1,! 1+1;  
+--------+-----------+---------+----------+---------+-------+
| not 10 | not (1-1) | not -10 | not null | not 1+1 | ! 1+1 |
+--------+-----------+---------+----------+---------+-------+
|      0 |         1   |       0  |     NULL |       0  |     1 |
+--------+-----------+---------+----------+---------+-------+
# and運算符
mysql> select 1 and 0,1 && 0,1 and null,1 && null,0 && null;   
+---------+--------+------------+-----------+-----------+
| 1 and 0 | 1 && 0 | 1 and null | 1 && null | 0 && null |
+---------+--------+------------+-----------+-----------+
|       0  |      0  |       NULL |      NULL  |         0 |
+---------+--------+------------+-----------+-----------+
# or運算符
mysql> select 1 or 0,1 || 0,1 or null,1 || null,0 or null,0 || null;
+--------+--------+-----------+-----------+-----------+-----------+
| 1 or 0 | 1 || 0 | 1 or null | 1 || null | 0 or null | 0 || null |
+--------+--------+-----------+-----------+-----------+-----------+
|      1 |      1  |         1  |         1   |      NULL |      NULL  |
+--------+--------+-----------+-----------+-----------+-----------+

    邏輯異或運算符XOR,當任意一個操作符爲NULL時,返回NULL;對於非NULL的操作數,如果兩個操作數都是非0值或者都是0值則返回結果爲0;如果一個爲0值,另一個爲非0值,則返回結果爲1;

# xor運算符
mysql> select 1 XOR 1, 1 XOR 0,1 XOR NULL,1 XOR 1 XOR 1;
+---------+---------+------------+---------------+
| 1 XOR 1 | 1 XOR 0 | 1 XOR NULL | 1 XOR 1 XOR 1 |
+---------+---------+------------+---------------+
|       0 |       1   |       NULL |             1   |
+---------+---------+------------+---------------+

4、運算符的優先級

優先級

運算符

最低

=,:=

 

||,OR

XOR

&&,AND

NOT

BETWEEN,CASE,WHEN,THEN,ELSE

=,<=>,>=,><=,<,<>,!=,IS,LIKE,REGEXP,IN

|

&

<<,>>

-,+

*,/(DIV),%(MOD)

^

-(負號),~(位反轉)

最高

!

    在計算時,級別高的運算符先進行計算,級別相同時,mysql按表達式的順序從左到右依次計算。同時,也可通過”()”來改變優先級。

5、分配操作符

操作符

作用

=

在set及update語句作爲賦值操作,還可作爲比較操作符

:=

賦值操作,左邊的變量設置爲右邊的值,也可用在update等語句

# “:=”作爲賦值操作
mysql> select @var1:=1,@var2; 
+----------+-------+
| @var1:=1 | @var2 |
+----------+-------+
|        1 | NULL  |
+----------+-------+
mysql> select @var1,@var2:=@var1;
+-------+--------------+
| @var1 | @var2:=@var1 |
+-------+--------------+
|     1 |            1 |
+-------+--------------+
# “:=”用在update語句
mysql> update course.student set sname='haha' where sid=@var1:=3;

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章