首頁 > 軟體

mysql中的四大運運算元種類範例彙總(20多項) 

2022-07-26 14:03:12

運用運演演算法有什麼好處呢?

運用運運算元可以更加靈活的使用表中的資料,我們可以通過使用運運算元來解決我們的很多問題,大大提高效率。

什麼是運運算元

運運算元是告訴mysql執行特定算術或者邏輯操作的符號。

mysql的內部運運算元很豐富,主要有四大類,分別是:

算術運運算元:用於各類數值運算

  • 加(+)
  • 減(-)
  • 乘(*)
  • 除(/)
  • 求餘(或者稱模運算)(%)
  • 比較運運算元:用於比較運算
  • 大於(>)
  • 小於(<)
  • 等於(=)
  • 大於等於(>=)
  • 小於等於(<=)
  • 不等於(!=)
  • IN、BETWEEN AND、IS NULL、GREATEST、LEAST、LIKE、REGEXP
  • 邏輯運運算元:求值所得結果均為1(TRUE)、0(FALSE),這類運運算元有:
  • 邏輯非(NOT或者!)
  • 邏輯與(AND或者&&)
  • 邏輯或(OR或者||)
  • 邏輯互斥或(XOR)
  • 位運運算元:參與運算的運算元按二進位制位進行運算
  • 位與(&)
  • 位或(|)
  • 位非(~)
  • 位互斥或(^)
  • 左移(<<)
  • 右移(>>)

可以看到上面有多達20多種運運算元,我們接下來就根據這個來一一進行整理。

算術運運算元

算術運運算元是sql中最基本的運運算元;

老規矩,一切都在操作中;

舉個例子

建立表一個名為yunweijia_1的資料表;

mysql> create table yunweijia_1 (num int);
Query OK, 0 rows affected (0.04 sec)
mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| yunweijia_1 |
+-------------------+
1 row in set (0.00 sec)

mysql>

yunweijia_1的資料表中插入資料;

mysql> insert into yunweijia_1 values (66);
Query OK, 1 row affected (0.01 sec)

mysql>

加法和減法運算

mysql> select num, num+10, num-10, num+10-5, num-5+10 from yunweijia_1;
+------+--------+--------+----------+----------+
| num | num+10 | num-10 | num+10-5 | num-5+10 |
+------+--------+--------+----------+----------+
| 66 | 76 | 56 | 71 | 71 |
+------+--------+--------+----------+----------+
1 row in set (0.00 sec)

mysql>

從上面可以看到,我們可以對num欄位的值進行加法和減法的運算,而且+- 的優先順序相同,先加後減或者先減後加的結果是相同的哈。

乘法、除法和求餘運算

mysql> select num, num*2, num/2, num%22, num%30 from yunweijia_1;
+------+-------+---------+--------+--------+
| num | num*2 | num/2 | num%22 | num%30 |
+------+-------+---------+--------+--------+
| 66 | 132 | 33.0000 | 0 | 6 |
+------+-------+---------+--------+--------+
1 row in set (0.00 sec)

mysql>

從上面可以看到,對num進行除除法運算的時間,66被2整除之後,小數位也是保留了4位元小數的。求餘運算的時候,由於66被22整除了,所以餘數是0,但是66無法被30整除,所以餘數就是6了。

注意點:

在數學運算時,除數為0的除法是沒有意義的,因此除法運算中的除數不能為0,如果被0除的話,結果會返回NULL

如下:

mysql> select num, num/0, num%0 from yunweijia_1; +------+-------+-------+ | num | num/0 | num%0 | +------+-------+-------+ | 66 | NULL | NULL | +------+-------+-------+ 1 row in set (0.00 sec) mysql>

比較運運算元

一個比較運運算元的結果總是1、0或者null。比較運運算元經常在select的查詢條件子句中使用,用來查詢滿足指定條件的記錄。

等於運運算元(=)

如果相等,返回值為1,否則返回值為0;

mysql> select 1=0, '2'=2, 2=2, '0.01'=0, 'a'='a', (1+5)=(8-2), NULL=NULL;
+-----+-------+-----+----------+---------+-------------+-----------+
| 1=0 | '2'=2 | 2=2 | '0.01'=0 | 'a'='a' | (1+5)=(8-2) | NULL=NULL |
+-----+-------+-----+----------+---------+-------------+-----------+
| 0 | 1 | 1 | 0 | 1 | 1 | NULL |
+-----+-------+-----+----------+---------+-------------+-----------+
1 row in set (0.00 sec)

mysql>

從結果可以看到哈,在進行判斷時,2=2和'2'=2的返回值是相同的,都是1,這是為啥呢,是因為在進行判斷時,mysql自動進行了轉換,把字元2轉換成了數位2;'a'='a'是相同的字元比較,因此返回值為1;表示式的話就因為等號(=)兩邊計算結果一致,所以返回值是1,由於(=)不能用於空值NULL的判斷,因此返回值為NULL

所以數值比較時有以下規則:

  • 若有一個或者兩個引數為NULL,則比較運算的結果為NULL
  • 若容一個比較運算中的兩個引數都是字串,則按照字串進行比較;
  • 若兩個引數均為整數的話,則按照整數進行比較;
  • 若用字串和數位進行相等判斷,則mysql自動可以將字串轉換為數位。

安全等於運運算元(<=>)

mysql中的安全等於運運算元和等於運運算元類似,不過呢,安全等於運運算元可以用來判斷NULL值。在兩個運算元均為NULL時,其返回值為1,而不是直接返回NULL;反之,當一個運算元為NULL,其返回值為0,而也不是NULL

mysql> select 1<=>0, '2'<=>2, 2<=>2, '0.01'<=>0, 'a'<=>'a', (1+5)<=>(8-2), NULL<=>NULL, 3<=>NULL;
+-------+---------+-------+------------+-----------+---------------+-------------+----------+
| 1<=>0 | '2'<=>2 | 2<=>2 | '0.01'<=>0 | 'a'<=>'a' | (1+5)<=>(8-2) | NULL<=>NULL | 3<=>NULL |
+-------+---------+-------+------------+-----------+---------------+-------------+----------+
| 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
+-------+---------+-------+------------+-----------+---------------+-------------+----------+
1 row in set (0.00 sec)

mysql>

不等於運運算元(<>或者!=)

'<>'或者'!='用於判斷數位、字串、表示式不相等的判斷;如果不相等,返回值為1;否則返回值為0;

注意:

這兩個運運算元不能用於判斷空值NULL

mysql> select 'goot'<>'good', 'good'!='good', 1<>2, 4!=4, 5.5!=5, (9-3)!=(9-5), NULL<>NULL;
+----------------+----------------+------+------+--------+--------------+------------+
| 'goot'<>'good' | 'good'!='good' | 1<>2 | 4!=4 | 5.5!=5 | (9-3)!=(9-5) | NULL<>NULL |
+----------------+----------------+------+------+--------+--------------+------------+
| 1 | 0 | 1 | 0 | 1 | 1 | NULL |
+----------------+----------------+------+------+--------+--------------+------------+
1 row in set (0.00 sec)

mysql>

小於等於運運算元(<=)

用來判斷左邊的運算元是否小於等於右邊的運算元。

如果小於等於,返回值為1,否則返回值為0。同樣的,<=不能用於判斷空值NULL

mysql> select 'good'<='good', 'good'<='goood', 'good'<='god', 1<=2, 3<=2, (4+1)<=(9-8), NULL<=NULL;
+----------------+-----------------+---------------+------+------+--------------+------------+
| 'good'<='good' | 'good'<='goood' | 'good'<='god' | 1<=2 | 3<=2 | (4+1)<=(9-8) | NULL<=NULL |
+----------------+-----------------+---------------+------+------+--------------+------------+
| 1 | 1 | 0 | 1 | 0 | 0 | NULL |
+----------------+-----------------+---------------+------+------+--------------+------------+
1 row in set (0.00 sec)

mysql>

小於運運算元(<)

用來判斷左邊的運算元是否小於右邊的運算元;

如果小於,返回值為1,否則返回值為0。<不能用於判斷空值NULL

mysql> select 'good'<'good', 'good'<'goodd', 'good'<'god', 1<2, 2<2, 5<3, NULL<NULL;
+---------------+----------------+--------------+-----+-----+-----+-----------+
| 'good'<'good' | 'good'<'goodd' | 'good'<'god' | 1<2 | 2<2 | 5<3 | NULL<NULL |
+---------------+----------------+--------------+-----+-----+-----+-----------+
| 0 | 1 | 0 | 1 | 0 | 0 | NULL |
+---------------+----------------+--------------+-----+-----+-----+-----------+
1 row in set (0.00 sec)

mysql>

大於等於運運算元(>=)

用來判斷左邊的運算元是否大於等於右邊的運算元。

如果大於等於,返回值為1;否則返回值為0。不能用於判斷空值NULL

mysql> select 'good'>='good', 'good'>='goodd', 'good'>='god', 1>=2, 2>=1, (5+5)>=(6-2), NULL>=NULL;
+----------------+-----------------+---------------+------+------+--------------+------------+
| 'good'>='good' | 'good'>='goodd' | 'good'>='god' | 1>=2 | 2>=1 | (5+5)>=(6-2) | NULL>=NULL |
+----------------+-----------------+---------------+------+------+--------------+------------+
| 1 | 0 | 1 | 0 | 1 | 1 | NULL |
+----------------+-----------------+---------------+------+------+--------------+------------+
1 row in set (0.00 sec)

mysql>

大於運運算元(>)

用來判斷左邊的運算元是否大於右邊的運算元。

如果大於,返回值為1;否則返回值為0。不能用於判斷空值NULL

mysql> select 'good'>'good', 'good'>'goood', 'good'>'god', 2>1, 3>5, (9+9)>(1+2), NULL>NULL;
+---------------+----------------+--------------+-----+-----+-------------+-----------+
| 'good'>'good' | 'good'>'goood' | 'good'>'god' | 2>1 | 3>5 | (9+9)>(1+2) | NULL>NULL |
+---------------+----------------+--------------+-----+-----+-------------+-----------+
| 0 | 0 | 1 | 1 | 0 | 1 | NULL |
+---------------+----------------+--------------+-----+-----+-------------+-----------+
1 row in set (0.00 sec)

mysql>

IS NULL(ISNULL)和(IS NOT NULL)運運算元

is nullisnull用來檢驗一個值是否為NULL

如果是NULL,返回值為1,否則返回值為0。

is not null用來檢驗一個值是否為非NULL

如果是非NULL,返回值為1,否則返回值為0。

mysql> select null is null, isnull(null), isnull(99), 99 is not null;
+--------------+--------------+------------+----------------+
| null is null | isnull(null) | isnull(99) | 99 is not null |
+--------------+--------------+------------+----------------+
| 1 | 1 | 0 | 1 |
+--------------+--------------+------------+----------------+
1 row in set (0.00 sec)

mysql>

BETWEEN AND運運算元

語法格式:

expr between min and max

如果expr大於等於min且小於等於max,則between的返回值為1,否則返回值為0。

mysql> select 4 between 1 and 5, 4 between 4 and 5, 9 between 1 and 8, 7 between 10 and 12;
+-------------------+-------------------+-------------------+---------------------+
| 4 between 1 and 5 | 4 between 4 and 5 | 9 between 1 and 8 | 7 between 10 and 12 |
+-------------------+-------------------+-------------------+---------------------+
| 1 | 1 | 0 | 0 |
+-------------------+-------------------+-------------------+---------------------+
1 row in set (0.00 sec)

mysql>

LEAST運運算元

語法格式:

least (值1,值2,...,值n)

在有兩個或者多個引數的情況下,返回最小值。如果任意一個自變數為NULL,則LEAST()返回的值為NULL

mysql> select least(0,1,2,3), least(1.0,5,99), least('a', 'b', 'c'), least(0,null,9);
+----------------+-----------------+----------------------+-----------------+
| least(0,1,2,3) | least(1.0,5,99) | least('a', 'b', 'c') | least(0,null,9) |
+----------------+-----------------+----------------------+-----------------+
| 0 | 1.0 | a | NULL |
+----------------+-----------------+----------------------+-----------------+
1 row in set (0.00 sec)

mysql>

GREATEST(VALUE1, VALUE2,......)

當有兩個或者多個引數時,返回最大值。如果任意一個自變數為NULL,則grestest()返回的值為NULL

mysql> select greatest(0,1,2,3), greatest(1.0,5,99), greatest('a', 'b', 'c'), greatest(0,null,9);
+-------------------+--------------------+-------------------------+--------------------+
| greatest(0,1,2,3) | greatest(1.0,5,99) | greatest('a', 'b', 'c') | greatest(0,null,9) |
+-------------------+--------------------+-------------------------+--------------------+
| 3 | 99.0 | c | NULL |
+-------------------+--------------------+-------------------------+--------------------+
1 row in set (0.00 sec)

mysql>

IN、NOT IN 運運算元

in運運算元用來判斷運算元是否為in列表中的其中一個值;

如果是,返回值為1,否則的話返回值為0。

mysql> select 9 in (1,4,9,10,'yunweijia'), 'yunweijia' in (1,4,9,10,'yunweijia'), 1 in (2,4,5);
+-----------------------------+---------------------------------------+--------------+
| 9 in (1,4,9,10,'yunweijia') | 'yunweijia' in (1,4,9,10,'yunweijia') | 1 in (2,4,5) |
+-----------------------------+---------------------------------------+--------------+
| 1 | 1 | 0 |
+-----------------------------+---------------------------------------+--------------+
1 row in set, 1 warning (0.00 sec)

mysql>

not in運運算元用來判斷表示式是否為in列表中的其中一個值;

如果不是,返回值為1,否則的話返回值為0。

mysql> select 9 not in (1,4,9,10,'yunweijia'), 'yunweijia' not in (1,4,9,10,'yunweijia'), 1 not in (2,4,5);
+---------------------------------+-------------------------------------------+------------------+
| 9 not in (1,4,9,10,'yunweijia') | 'yunweijia' not in (1,4,9,10,'yunweijia') | 1 not in (2,4,5) |
+---------------------------------+-------------------------------------------+------------------+
| 0 | 0 | 1 |
+---------------------------------+-------------------------------------------+------------------+
1 row in set, 1 warning (0.00 sec)

mysql>

in裡面存在null值,如果運運算元不成立的話,直接返回null

mysql> select 9 in (1,4,9,10, null), 'yunweijia' in (1,4,9,10,'yunweijia', null), 1 in (2,4,5, null);
+-----------------------+---------------------------------------------+--------------------+
| 9 in (1,4,9,10, null) | 'yunweijia' in (1,4,9,10,'yunweijia', null) | 1 in (2,4,5, null) |
+-----------------------+---------------------------------------------+--------------------+
| 1 | 1 | NULL |
+-----------------------+---------------------------------------------+--------------------+
1 row in set, 1 warning (0.00 sec)

mysql>

like運演演算法

用來匹配字串;語法格式:

expr like 匹配條件

如果expr滿足匹配條件,則返回值為1,否則返回值為0。

expr或匹配條件中任何一個為null,則結果為null

like運運算元在進行匹配的時候,可以使用萬用字元,如下:

  • %匹配任何數目的字元,甚至包括零字元;
  • _只能匹配一個字元;
mysql> select 'yunweijia' like 'yunweijia', 'ywj' like 'yw_', 'ywj' like 'y%', 'ywj' like 'yunweijia';
+------------------------------+------------------+-----------------+------------------------+
| 'yunweijia' like 'yunweijia' | 'ywj' like 'yw_' | 'ywj' like 'y%' | 'ywj' like 'yunweijia' |
+------------------------------+------------------+-----------------+------------------------+
| 1 | 1 | 1 | 0 |
+------------------------------+------------------+-----------------+------------------------+
1 row in set (0.00 sec)

mysql>

REGEXP運運算元

mysql中的正規表示式,用來匹配字串,語法格式為:

expr regexp 匹配條件

如果expr滿足匹配條件,返回1,否則返回0,如果expr或匹配條件任意一個為NULL,則結果為NULL

regexp運運算元在進行匹配時,常用的有以下幾種萬用字元:

  • ^匹配以該字元後面的字元開頭的字串
  • $匹配以該字元前面的字元結尾的字串
  • .匹配任意一個單字元
  • [...]匹配在方括號內的任何字元,例如:[abc]匹配'a','b','c'。常用的還有[a-z]匹配任何字母,而[0-9]匹配任何數位
  • *匹配另個或者多個在他前面的字元,例如:'x*'匹配任何數量的'x'字元,[0-9]*匹配任何數位,*匹配任何數量的任何字元。
mysql> select 'yunweijia' regexp '^y', 'ywj' regexp 'j$', 'ywj' regexp 'y*j', 'ywj' regexp "['ywj', 'aa', 'bb']";
+-------------------------+-------------------+--------------------+------------------------------------+
| 'yunweijia' regexp '^y' | 'ywj' regexp 'j$' | 'ywj' regexp 'y*j' | 'ywj' regexp "['ywj', 'aa', 'bb']" |
+-------------------------+-------------------+--------------------+------------------------------------+
| 1 | 1 | 1 | 1 |
+-------------------------+-------------------+--------------------+------------------------------------+
1 row in set (0.00 sec)

mysql>

邏輯運運算元

mysql中所有邏輯運運算元的求值所得結果均為TRUEFALSENULL

mysql中,他們提現為1(TRUE)、0(FALSE)和NULL

NOT或!

邏輯非運運算元not或者!,表示當運算元為0時,所得值為1;

當運算元為非零值時,所得值為0;

當運算元為null時,所得的返回值為null

mysql> select not 10, not (1-1), not -5, not null, not 1+1;
+--------+-----------+--------+----------+---------+
| not 10 | not (1-1) | not -5 | not null | not 1+1 |
+--------+-----------+--------+----------+---------+
| 0 | 1 | 0 | NULL | 0 |
+--------+-----------+--------+----------+---------+
1 row in set (0.00 sec)

mysql>

小提示:

在使用運運算元計算時,一定要注意不同運運算元的優先順序不同。如果不能確定計算順序,最好使用括號,以保證運算結果的正確。

ADD或者&&

邏輯與運運算元add或者&&表示當所有運算元均為非零值,並且不為null時,計算所得結果為1,;

當一個或多個運算元為0時,所得結果為0;

其餘情況返回值為null

mysql> select 9 and -9, 1 and 0, 1 and null, 0 and null;
+----------+---------+------------+------------+
| 9 and -9 | 1 and 0 | 1 and null | 0 and null |
+----------+---------+------------+------------+
| 1 | 0 | NULL | 0 |
+----------+---------+------------+------------+
1 row in set (0.01 sec)

mysql> select 9 && -9, 1 && 0, 1 && null, 0 && null;
+---------+--------+-----------+-----------+
| 9 && -9 | 1 && 0 | 1 && null | 0 && null |
+---------+--------+-----------+-----------+
| 1 | 0 | NULL | 0 |
+---------+--------+-----------+-----------+
1 row in set, 4 warnings (0.00 sec)

mysql>

or或者||

邏輯或運運算元or或者||表示當兩個運算元均為非null值且任意一個運算元為非零值時,結果為1,否則結果為0;

當有一個運算元為null,且另一個運算元為非零值時,則結果為1,否則結果為null

當兩個運算元均為null時,則所得結果為null

mysql> select 9 or -9 or 0, 1 or 2, 0 or 0, 1 or null, 0 or null, null or null;
+--------------+--------+--------+-----------+-----------+--------------+
| 9 or -9 or 0 | 1 or 2 | 0 or 0 | 1 or null | 0 or null | null or null |
+--------------+--------+--------+-----------+-----------+--------------+
| 1 | 1 | 0 | 1 | NULL | NULL |
+--------------+--------+--------+-----------+-----------+--------------+
1 row in set (0.00 sec)

mysql> select 9 || -9 || 0, 1 || 2, 0 || 0, 1 || null, 0 || null, null || null;
+--------------+--------+--------+-----------+-----------+--------------+
| 9 || -9 || 0 | 1 || 2 | 0 || 0 | 1 || null | 0 || null | null || null |
+--------------+--------+--------+-----------+-----------+--------------+
| 1 | 1 | 0 | 1 | NULL | NULL |
+--------------+--------+--------+-----------+-----------+--------------+
1 row in set, 7 warnings (0.00 sec)

mysql>

XOR

邏輯互斥或運運算元xor表示當任意一個運算元為null時,返回值為null

對於非null的運算元,如果兩個運算元都是非0值或者都是0值,則返回結果為0;

如果一個為0值,另一個為非0值,返回結果為1。

mysql> select 1 xor 1, 0 xor 0, 1 xor 0, 1 xor null, null xor null, 1 xor 1 xor 1;
+---------+---------+---------+------------+---------------+---------------+
| 1 xor 1 | 0 xor 0 | 1 xor 0 | 1 xor null | null xor null | 1 xor 1 xor 1 |
+---------+---------+---------+------------+---------------+---------------+
| 0 | 0 | 1 | NULL | NULL | 1 |
+---------+---------+---------+------------+---------------+---------------+
1 row in set (0.00 sec)

mysql>

位運運算元

位運運算元是在二進位制數上進行計算的運運算元。位運運算元會先將運算元變成二進位制數,然後進行位運算,最後將計算結果從二進位制變回十進位制數。

位或運運算元(||)

位或運算的實質是將參與運算的幾個資料按照對應的二進位制數作為進行邏輯或運算。對應的二進位制位有一個或兩個為1則該位的運算結果為1,否則為0。

mysql> select 10 | 15, 9 | 4 | 2;
+---------+-----------+
| 10 | 15 | 9 | 4 | 2 |
+---------+-----------+
| 15 | 15 |
+---------+-----------+
1 row in set (0.01 sec)

mysql>

10的二進位制數值為1010,15的二進位制數值為1111,按位元或運算之後,結果為1111,即整數15;

9的二進位制數值為1001,4的二進位制數值為0100,2的二進位制數值為0010,按位元或運算之後,結果為1111,即整數15。

位與運運算元(&)

位與運算的實質是將參與運算的幾個運算元按照對應的二進位制數逐位進行邏輯與運算。對應的二進位制位都是1或1則該位的運算結果為1,否則為0。

mysql> select 10 & 15, 9 & 4 & 2;
+---------+-----------+
| 10 & 15 | 9 & 4 & 2 |
+---------+-----------+
| 10 | 0 |
+---------+-----------+
1 row in set (0.00 sec)

mysql>

10的二進位制數值為1010,15的二進位制數值為1111,按位元與運算之後,結果為1010,即整數10;

9的二進位制數值為1001,4的二進位制數值為0100,2的二進位制數值為0010,按位元與運算之後,結果為0000,即整數0。

位互斥或運運算元(^)

位互斥或運算的實質是將參與運算的兩個資料按照對應的二進位制數逐位進行邏輯互斥或運算。

對應位的二進位制數不同時,對應位的結果才為1。如果兩個對應位數都為0或者都為1,則對應位的結果為0。

mysql> select 10 ^ 5, 1 ^ 2, 3 ^ 6;
+--------+-------+-------+
| 10 ^ 5 | 1 ^ 2 | 3 ^ 6 |
+--------+-------+-------+
| 15 | 3 | 5 |
+--------+-------+-------+
1 row in set (0.00 sec)

mysql>

10的二進位制數值為1010,5的二進位制數值為101,按位元互斥或運算之後,結果為1111,即整數15;

1的二進位制數值為1,2的二進位制數值為10,按位元互斥或運算之後,結果為11,即整數為3;

3的二進位制數值為11,6的二進位制數值為110,按位元互斥或運算之後,結果為101,即整數5。

位左移運運算元(<<)

位左移運運算元<<使指定的二進位制值的所有位都左移指定的位數。

左移指定位數之後,左邊高位的數值繼續左移,並不會進行丟棄,右邊低位空出的位置用0補齊。

語法格式:

expr << n

n指定值expr要移位的位數。

mysql> select 1 << 2, 15 << 6;
+--------+---------+
| 1 << 2 | 15 << 6 |
+--------+---------+
| 4 | 960 |
+--------+---------+
1 row in set (0.00 sec)

mysql>

1的二進位制值為1,左移兩位之後變成了100,即十進位制證書4

15的二進位制位1111,左移6位之後變成了1111000000,即十進位制整數960。

位右移運運算元(>>)

位右移運運算元>>使指定的二進位制值的所有位都右移指定的位數。

右移指定位數之後,右邊低位的數值將被移出並丟棄,左邊高位空出的位置用0補齊。

語法格式為:

expr >> n

n指定值expr要移位的位數。

mysql> select 200 >> 2, 10 >> 6;
+----------+---------+
| 200 >> 2 | 10 >> 6 |
+----------+---------+
| 50 | 0 |
+----------+---------+
1 row in set (0.00 sec)

mysql>

100的二進位制為11001000,右移兩位之後是110010,即十進位制50;

10的二進位制為1010,右移6位之後是0,即二進位制也是0。

位取反運運算元(~)

位取反運算的實質是將參與運算的資料按照對應的二進位制數逐位反轉,即1取反後變為0、0取反後變為1。

mysql> select 100 & ~1;
+----------+
| 100 & ~1 |
+----------+
| 100 |
+----------+
1 row in set (0.00 sec)

mysql>

在邏輯運算100 & ~1中,由於位取反運運算元~的級別高於位與運運算元,因此先對1進行取反操作,取反之後,除了最低位為0外,其他位都是1,即1110,然後與十進位制數值100進行與運算,結果為1100100,即整數100。

運運算元的優先順序

運運算元的優先順序決定了不同的運運算元在表示式中計算的先後順序。我們上面整理了這麼多運運算元,到底哪些運運算元的優先順序最高呢,下面我們就將優先順序由低到高排列。

每個運運算元的優先順序都是不同的,一般情況下,級別高的運運算元先進行計算,如果級別相同,mysql按表示式的順序從左到右依次計算。如果無法確定優先順序,我們可以使用圓括號()來改變優先順序。而且這樣子會使我們的sql更加優雅,且計算過程更加清晰。 

到此這篇關於mysql中的四大運運算元種類彙總(20多項) 的文章就介紹到這了,更多相關mysql運運算元內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com