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:[email protected];
+-------+--------------+
| @var1 | @var2:[email protected] |
+-------+--------------+
| 1 | 1 |
+-------+--------------+
# “:=”用在update語句
mysql> update course.student set sname='haha' where [email protected]:=3;