運算子是用來連線表示式中各個運算元的符號,其作用是用來指明對運算元所進行的運算。mysql運算子包括四類,分別是算術運算子、比較運算子、邏輯運算子和位運算子。
算術運算子:包括加、減、乘、除、求餘這集中算術運算子。
比較運算子:包括大於、小於、等於、不等於、為空等比較運算子。主要用於數值的比較、字串的匹配等方面,尤其值得注意的是like、in、between and、is null等都是比較運算子,還有用於使用正規表示式的regexp也是比較運算子。
邏輯運算子:包括與、或、非、異或等邏輯運算。
位運算子:包括按位與、按位或、按位取反、按位異或、按位左移和按位右移等位運算。
select a ,a+5+2, a-5-2, a*5*2 from t1;
執行結果:
aa+5+2
a-5-2
a*5*2
2431
17240
select a ,a/3, a div 3, a
%3,mod(a,3) from t1;
執行結果:
aa/3
a div 3
a%3mod(a,3)
248.000080
0
select
5/0, 5
div0,5%0 ,mod(5,0);
執行結果:
5/05 div 0
5%0mod(5,0)
null
null
null
null
空值(null)不能使用「=」來判斷
select a ,a=24,a=20
from t1;
select
'b'='b','b'='c',null=null;
這兩個符號也不能用來判斷空值(null)
select a,a<>23,a!=23,a!=24,a!=null
from t1;
select
'b'<>'b','b'!='c';
「<=>」的作用與「=」是一樣的,這個符號可以用來判斷空值(null)。
這些運算子都不能用來判斷空值(null)
判斷運算元是否為空值(null),is not null剛好和is null相反。
select a ,a is
null,a is
notnull
from t1;
執行結果:
aa is null
a is not null240
1
select a, a between 24
and26
from t1;
執行結果:
aa between 24 and 26241
「in」用來判斷運算元是否落在某個集合中。
select s,s like
'beijing',s like
'___jing',s like
'b%',s like
's%'
from t2;
執行結果:
ss like 『beijing』
s like 『___jing』
s like 『b%』
s like 『s%』
beijing11
10邏輯運算子用來判斷表示式的真假。邏輯運算子的返回結果只有1和0。邏輯運算子又稱為布林運算子。mysql中支援四種邏輯運算子。這四種邏輯運算子分別是與、或、非和異或。
「&&」或者and表示與運算。
select -1&&2&&3, 0&&3, 0&&null, 3&&null;
-1&&2&&3
0&&3
0&&null
3&&null10
0null
「||」或則會or表示或運算。
select -1||1||null||0, 3||null,0||null,null||null,0||0;
-1||1||null||0
3||null
0||null
null||null
0||011
null
null
0「!」或者not表示非運算。
select
!1,!
0.3,!-3,!
null,!
0;
!1
!0.3
!-3!null!00
00null
1xor表示異或運算。只要其中任何乙個運算元為null時,結果返回null;如果都是非0的數字或者都是0時,結果返回0;如果有乙個是非0,另乙個是0時,結果返回1。
select
null
xor1, null
xor0,3
xor1, 1
xor0,0
xor0,3
xor2
xor0
xor1;
null xor 1
null xor 0
3 xor 1
1 xor 0
0 xor 0
3 xor 2 xor 0 xor 1
null
null01
01位運算子是在二進位制數上進行計算的運算子。位運算會先將運算元變成二進位制數,然後進行位運算。然後再將計算結果從二進位制數變回十進位制數。mysql支援六種位運算子,分別是按位與、按位或、按位取反、按位異或、按位左移和按位右移。
符號名稱
&按位與
|按位或
~按位取反
^按位異或
<<
按位左移
>>
按位右移
「&」表示按位與,進行該運算時,資料庫系統會先將十進位制的數轉換為二進位制的數,然後對應運算元的每個二進位制位上進行與運算。運算完成後再將二進位制變回十進位制數。
select
5&6,5&6&7;
執行結果:
5&65&6&744
「|」表示按位或,將運算元化為二進位制後。每位都進行或運算。
select
5|6,5|6|7;
執行結果:56
5677
7
select ~1;
執行結果:
~118446744073709551614
「<<」表示按位左移。「m<
select
5<<2,5>>2;
執行結果:
5<<2
5>>2201
由於在實際應用中可能需要同時使用多個運算子。這就必須考慮運算子的運算順序。mysql的表示式都是從左到右開始運算,那個運算子的優先順序高,哪個運算子先進行計算。
優先順序運算子
1(最高)!2
-(負號),~(按位取反)
3^(按位異或)
4*,/(div),%(mod)
5+,-
6>>,<<7&
8|9=(比較運算),<=>,<,<=,>,>=,!=,<>,in,is null,like,regexp
10between and,case,when,then,else
11not
12&&,and
13xor
14||,or
15(最低)
=(賦值運算),:=
我們可以看出,不同運算子的優先順序是不同的。在無法確定優先順序的情況下,可以使用圓括號()來改變優先順序,並且這樣會使計算過程更加清晰。
MySQL學習筆記(5) 運算子
本文更新於2020 06 14,使用mysql 5.7,作業系統為deepin 15.4。目錄運算子 語法說明 a b加法 a b減法 a b乘法 a b 除法。類似div,但div會對結果取整,的結果可為小數 a b 取餘。類似mod 運算子語法說明 a b 等於 或 a b 不等於 a b nu...
js 學習之路9 運算子
1.算數運算子 運算子描述 例子結果 加 x y 2 x 7 減x y 2 x 3 乘x y 2 x 10 除 x y 2 x 2.5 求餘數 保留整數 x y 2 x 1 累加x y x 6 遞減x y x 42.賦值運算子 運算子例子 等價於結果 x y x 5 x y x x y x 15 x...
MySQL筆記七 運算子
可以再select語句中使用算術運算子,包括加 減 乘 除 取餘 比較運算子,包括等於 大於 小於 不等於和為空等比較運算子 邏輯運算子,包括與 或 非和異或等運算子 位運算子,包括按位與 按位或 按位取反 按位異或 按位左移和按位右移等位運算。在算數運算中,如果第二個引數是0,計算結果將是null...