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!

推薦閱讀: