MYSQL 運算符總結
1、算數運算符
MySQL支持的算術運算符:
運算符
|
作用
|
+
|
加法
|
–
|
減法
|
*
|
乘法
|
/,DIV
|
除法,返回商
|
%,MOD
|
除法,返回餘數
|
例1: +,-,*,/,%,
mysql> select 0.1+0.333,0.1-0.333,0.1*0.333,1/2,1%2; +-----------+-----------+-----------+--------+------+ | 0.1+0.333 | 0.1-0.333 | 0.1*0.333 | 1/2 | 1%2 | +-----------+-----------+-----------+--------+------+ | 0.433 | -0.233 | 0.0333 | 0.5000 | 1 | +-----------+-----------+-----------+--------+------+ 1 row in set (0.05 sec)
例2:除法運算中,如果除數為0
將是返回NULL
mysql> select 1/0; +------+ | 1/0 | +------+ | NULL | +------+ 1 row in set (0.00 sec)
例3:模運算的另外一種形式MOD
(a,b) 和a%b
相同
mysql> select 1%2,mod(1,2); +------+----------+ | 1%2 | mod(1,2) | +------+----------+ | 1 | 1 | +------+----------+ 1 row in set (0.00 sec)
2、比較運算符
MySQL支持的比較運算符:
運算符
|
作用
|
=
|
等於 |
<>或!=
|
不等於
|
<=>
|
NULL 安全的等於(NULL-safe)
|
<
|
小於
|
<=
|
小於等於
|
>
|
大於
|
>=
|
大於等於
|
BETWEEN
|
存在與指定范圍
|
IN
|
存在於指定集合
|
IS NULL
|
為 NULL
|
IS NOT NULL
|
不為 NULL
|
LIKE
|
通配符匹配
|
REGEXP 或 RLIKE
|
正則表達式匹配
|
例1:“<>
” 和 “=
” 相反,如果兩則操作不等 返回結果為1,否則返回結果0,“NULL
”不能用於“<>
”比較
mysql> select 1<>0,1<>1,null<>null; +------+------+------------+ | 1<>0 | 1<>1 | null<>null | +------+------+------------+ | 1 | 0 | NULL | +------+------+------------+ 1 row in set (0.00 sec)
例2: “<=>
”安全等於運算符和“=
”操作相同返回1,區別在於“<=>
”在值為null
的時候也可以做比較
mysql> select 1<=>1,1<=>0,null<=>null; +-------+-------+-------------+ | 1<=>1 | 1<=>0 | null<=>null | +-------+-------+-------------+ | 1 | 0 | 1 | +-------+-------+-------------+ 1 row in set (0.02 sec)
例3: “<
”當左側小於右側時,返回1
mysql> select 'a'<'b','A'<'b','bdf'<'c',1<2; +---------+---------+-----------+-----+ | 'a'<'b' | 'A'<'b' | 'bdf'<'c' | 1<2 | +---------+---------+-----------+-----+ | 1 | 1 | 1 | 1 | +---------+---------+-----------+-----+ 1 row in set (0.02 sec)
例4:between
,格式為“a BETWEEN min AND max
”,表示a大於等於min
並且小於等於max
的時候,返回1,否則返回0
mysql> select 10 between 10 and 20,9 between 10 and 20; +----------------------+---------------------+ | 10 between 10 and 20 | 9 between 10 and 20 | +----------------------+---------------------+ | 1 | 0 | +----------------------+---------------------+ 1 row in set (0.01 sec)
例5:regexp
,格式為“str REGEXP str_pat
”,表示str字符串中含有str_pat
相匹配的字符串時,則返回1,否則返回0
mysql> select 'abcdeef' regexp 'ab','abcdef' regexp 'g','abcedf' regexp 'df'; +-----------------------+---------------------+----------------------+ | 'abcdeef' regexp 'ab' | 'abcdef' regexp 'g' | 'abcedf' regexp 'df' | +-----------------------+---------------------+----------------------+ | 1 | 0 | 1 | +-----------------------+---------------------+----------------------+ 1 row in set (0.01 sec)
其他的使用簡單,直接上語法,示例就不寫瞭
in
,使用格式為“a IN (value1,value2,…)
”IS NULL
,使用格式為“a IS NULL
”IS NOT NULL
,使用格式為“a IS NOT NULL
”LIKE
,使用格式為“a LIKE %123%
”
3、邏輯運算符
MySQL中的邏輯運算符:
運算符
|
作用
|
NOT 或!
|
邏輯非
|
AND 或&&
|
邏輯與
|
OR 或 ||
|
邏輯或
|
XOR
|
邏輯異或
|
例1: ““NOT
”或“!
”表示邏輯非。返回和操作數相反的結果。當操作為0,則返回1;當操作為1,則返回0,但是NOT NLLL
返回null
mysql> select not 0,!0,not 1,not null; +-------+----+-------+----------+ | not 0 | !0 | not 1 | not null | +-------+----+-------+----------+ | 1 | 1 | 0 | NULL | +-------+----+-------+----------+ 1 row in set (0.00 sec)
例2: “AND
”和“&&
”表示邏輯與運算,當操作數均為非零值,返回結果1,否則返回0,當操作數中有任意一個為NULL,其中一個值如果為0,返回0;其他值都是>0的數值,另外有NULL
,則返回NULL
mysql> select (1 and 1),(0 and 1),(3 and 1),(0 and null),(1 and null); +-----------+-----------+-----------+--------------+--------------+ | (1 and 1) | (0 and 1) | (3 and 1) | (0 and null) | (1 and null) | +-----------+-----------+-----------+--------------+--------------+ | 1 | 0 | 1 | 0 | NULL | +-----------+-----------+-----------+--------------+--------------+ 1 row in set (0.00 sec) mysql> select 1 and NULL and 0; +------------------+ | 1 and NULL and 0 | +------------------+ | 0 | +------------------+ 1 row in set (0.00 sec) mysql> select 1 and NULL and 3; +------------------+ | 1 and NULL and 3 | +------------------+ | NULL | +------------------+ 1 row in set (0.00 sec)
例3: “OR
”或“||
”表示邏輯或運算。當操作數均不為NULL時,任意一方非零,則結果為1,否則為0;當有一個操作數為NULL,如果另一個操作數非零,則結果為1,否則結果為NULL
mysql> select (1 or 0),(0 or 0),(1 or NULL),(0 or NULL),(NULL or NULL); +----------+----------+-------------+-------------+----------------+ | (1 or 0) | (0 or 0) | (1 or NULL) | (0 or NULL) | (NULL or NULL) | +----------+----------+-------------+-------------+----------------+ | 1 | 0 | 1 | NULL | NULL | +----------+----------+-------------+-------------+----------------+ 1 row in set (0.00 sec)
例4:XOR
表示邏輯異或。當任意一個操作數為 NULL 時,返回值為 NULL。對於非 NULL 的操作數,如果兩個的邏輯真假值相異,則返回結果 1;否則返回 0。
mysql> select (0 xor 0),(1 xor 0),(1 xor 1),(1 xor null),(0 xor null),(null xor null); +-----------+-----------+-----------+--------------+--------------+-----------------+ | (0 xor 0) | (1 xor 0) | (1 xor 1) | (1 xor null) | (0 xor null) | (null xor null) | +-----------+-----------+-----------+--------------+--------------+-----------------+ | 0 | 1 | 0 | NULL | NULL | NULL | +-----------+-----------+-----------+--------------+--------------+-----------------+ 1 row in set (0.00 sec)
4、位運算符
MySQL支持的位運算符:
運算符
|
作用 |
&
|
位與(位 AND)
|
|
|
位或 (位 OR )
|
^
|
位異或(位 XOR)
|
~
|
位取反
|
>>
|
位右移
|
<<
|
位左移
|
例1: “位與”對多個操作數的二進制位作邏輯與操作。2&3,2的二進制數為10,3的二進制數為11,將此做與操作,結果還是10,轉換為十進制結果就是2
mysql> select 2&3; +-----+ | 2&3 | +-----+ | 2 | +-----+ 1 row in set (0.01 sec)
例2: “位或”對多個操作數的二進制位作邏輯或操作。2&3,2的二進制數為10,3的二進制數為11,將此做與操作,結果就變成11,轉換為十進制結果就是3
mysql> select 2|3; +-----+ | 2|3 | +-----+ | 3 | +-----+ 1 row in set (0.00 sec)
例3: “位異或
”對多個操作數的二進制位作異或操作。2^3 ,2的二進制數為10,3的二進制數為11,10^11結果就是01,轉換為十進制結果就是1
mysql> select 2^3; +-----+ | 2^3 | +-----+ | 1 | +-----+ 1 row in set (0.01 sec)
例4: “位取反”對操作數的二進制位做NOT操作,這裡的操作數隻能是一位,解釋:在mysql中常亮數字默認會以8字節表示,8個字節就是64位,而常量1的二進制 就是前面63個0,1個1,位去反後就是63個1,1個0,轉換為二進制後就是 18446744073709551614,
mysql> select ~1,~18446744073709551614 -> ; +----------------------+-----------------------+ | ~1 | ~18446744073709551614 | +----------------------+-----------------------+ | 18446744073709551614 | 1 | +----------------------+-----------------------+ 1 row in set (0.01 sec) mysql> select bin(18446744073709551614); +------------------------------------------------------------------+ | bin(18446744073709551614) | +------------------------------------------------------------------+ | 1111111111111111111111111111111111111111111111111111111111111110 | +------------------------------------------------------------------+ 1 row in set (0.03 sec)
例5: “位右移”對左操作數向右移動操作數指定的位數。例如100>>3,對100的二進制數0001100100右移動3位,0000001100,轉換為二進制數就是12:
mysql> select 100>>3; +--------+ | 100>>3 | +--------+ | 12 | +--------+ 1 row in set (0.00 sec)
例6: “位左移”對左操作數向左移動操作數指定的位數。例如100<<3,對100的二進制數0001100100000右移動3位,1100100000000,轉換為二進制數就是800:
mysql> select 100<<3; +--------+ | 100<<3 | +--------+ | 800 | +--------+ 1 row in set (0.00 sec)
5、運算符的優先級
MySQL中的運算符優先級:
優先級順序
|
運算符
|
1 |
:=
|
2 |
||, OR, XOR
|
3 |
&&, AND
|
4 |
NOT
|
5 |
BETWEEN, CASE, WHEN, THEN, ELSE
|
6 |
=, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
|
7 |
|
|
8 |
&
|
9 |
<<, >>
|
10 |
-, +
|
11 |
*, /, DIV, %, MOD
|
12 |
^
|
13 |
– (一元減號), ~ (一元比特反轉)
|
14 |
!
|
到此這篇關於MYSQL 運算符總結的文章就介紹到這瞭,更多相關MYSQL 運算符內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- MySQL中使用正則表達式詳情
- MySQL如何從不固定位置提取字符串元素詳解
- mysql語法之DQL操作詳解
- 解決mysql使用not in 包含null值的問題
- MySQL中case when對NULL值判斷的踩坑記錄