注意:在除法運算和模運算中,若是除數爲0,將是非法除法,返回結果爲NULL。
例:mysql
mysql> create table tab1(num int); # 建立一列的表 mysql> insert into tab1 values(64); # 插入數據 mysql> select num,num+10,num-3,num*3,num%3,num/3 from tab1; # 使用各類運算符來進行
返回的內容以下:
sql
select語句中的條件語句常常要使用比較運算符。經過這些比較運算符,能夠判斷表中的哪些記錄時符合條件的,比較結果爲真,則返回1,爲假則返回0,比較結果不肯定則返回NULL。
一、等於運算符
等於運算符用來判斷數字、字符串和表達式是否相等,若是相等,則返回值爲1,不然返回值爲0,若是有一個值是NULL,則比較結果是NULL。數據庫
mysql> select 1=0,'2'=2,(1+3)=(2+2),NULL=NULL;
二、嚴格等於運算符(<=>)
這個操做符和等於運算符(=)的做用一致,只不過多了一個功能,就是能夠判斷NULL值,以下:ide
mysql> select 1<=>0,'2'<=>2,(1+3)<=>(2+2),NULL<=>NULL;
三、不等於運算符(<>或!=)
不等於運算符用於判斷數字、字符串、表達式是否不相等,若是不相等則返回 1,不然返回 0 ,可是不能判斷 NULL 值。3d
mysql> select 'good'<>'god',1<>2,4!=4,5.5!=5,NULL<>NULL;
四、IS NULL 、IS NOT NULLcode
IS NULL是 檢驗一個值是否爲 NULL ,若是爲 NULL ,返回值爲 1,不然返回值爲 0;
IS NOT NULL 檢驗一個值是否不爲 NULL ,若是不爲 NULL ,返回值爲 1,不然返回值爲 0。regexp
mysql> select NULL IS NULL,(10) IS NULL, 10 IS NOT NULL;
五、BETWEEN AND
用於判斷一個值是否落在兩個值之間。blog
mysql> select 4 between 1 and 5,4 between 4 and 6,12 between 9 and 10;
六、LEAST 、GREATEST字符串
LEAST :當有兩個或多個參數時,返回最小值,若是有一個值是 NULL ,則返回結果爲 NULL;
GREATEST :當有兩個或多個參數時,返回最大值,若是有一個值是 NULL ,則返回結果爲 NULL。it
mysql> select least(2,0),least('a','b','c'),least(10,NULL),greatest(2,0),greatest(10,NULL);
七、IN、NOT IN
IN :判斷一個值是不是 IN 列表中的任意一個值;
NOT IN :判斷一個值是否不是 IN 列表中的任意一個值。
mysql> select 2 in(3,5,8,2),2 not in(1,3,5);
八、LIKE
LIKE 運算符用來匹配字符串,若是匹配則返回 1,若是不匹配則返回 0;
LIKE 使用兩種通配符:'%' 用於匹配任何數目的字符,包括零字符 ; '_' 只能匹配一個字符。
mysql> select 'stud' like 'stu_','stud' like 's___','stud' like '%d';
九、REGEXP
1)REGEXP運算符用來匹配字符串,若是匹配則返回1,若是不匹配則返回0;
2)REGEXP 使用如下幾種通配符:
- '^':用於匹配以什麼開頭的字符串;
- '$':用以匹配以什麼結尾的字符串;
- '.':用於匹配任何一個單字符串;
- '[...]':用於匹配在方括號內的任何字符;
- '*'用於匹配零個或多個在它前面的字符;
mysql> select 'ssky' regexp '^s','ssky' regexp 'y$','ssky' regexp '.sky','ssky' regexp '[ab]';
3、邏輯運算符
邏輯運算符用來判斷表達式的真假。若是表達式是真,結果返回 1。若是表達式是假,結果返回 0。
一、邏輯非(NOT 或 !)
當操做數爲 0 時,所得值爲 1;
當操做數爲非 0 時,所得值爲 0;
當操做數爲 NULL 時,所得值爲 NULL。
mysql> select not 10,!10,not(1-1),!(1-1),not 1+1,not null;
二、邏輯與(AND或&&)
當全部操做數均爲非零值、而且不爲 NULL 時,所得值爲 1;
當一個或多個操做數爲 0 時,所得值爲 0 ;
其他狀況所得值爲 NULL。
mysql> select 1 and -1,1 && 0,0 and null,1&& null;
三、邏輯或(OR 或 || )
當兩個操做數均爲非 NULL 值,且任意一個操做數爲非零值時,結果爲 1 ,不然爲 0;
當有一個操做數爲 NULL ,且另外一個操做數爲非零值時,則結果爲 1 ,不然結果爲 NULL;
當兩個操做數均爲 NULL 時,則所得結果爲 NULL。
mysql> select 1 or -1 or 0,1 || 2,0 or null,null || null;
四、邏輯異或(XOR)
a XOR b 的計算等同於 ( a AND (NOT b) ) 或 ( (NOT a) AND b );
當任意一個操做數爲 NULL 時,返回值爲 NULL;
對於非 NULL 的操做數,若是兩個操做數都是非 0 值或者都是 0 值,則返回結果爲 0;
若是一個爲 0 值,另外一個爲非 0 值,返回結果爲 1。
mysql> select 1 xor 1,0 xor 0,1 xor 0,1 xor null,1 xor 1 xor 1;
位運算符是在二進制數上進行計算的運算符。位運算會先將操做數變成二進制數,進行位運算。而後再將計算結果從二進制數變回十進制數。
一、位或運算符( | )
對應的二進制位有一個或兩個爲 1 ,則該位的運算結果爲 1 ,不然爲 0。
mysql> select 10|15,9|4|2; +-------+-------+ | 10|15 | 9|4|2 | # 10的二進制爲1010,15的二進制爲1111,按位或運算以後結果爲1111,即15 +-------+-------+ # 9的二進制爲1001,4爲0100,2的二進制爲0010,按位或運算以後1111,即15 | 15 | 15 | +-------+-------+ 1 row in set (0.00 sec)
二、位與運算符(&)
對應的二進制位都爲 1 ,則該位的運算結果爲 1 ,不然爲 0。
mysql> select 10 & 15,9 & 4 & 2; +---------+-----------+ | 10 & 15 | 9 & 4 & 2 | +---------+-----------+ | 10 | 0 | +---------+-----------+ 1 row in set (0.00 sec)
三、位異或運算符(^)
對應的二進制位不相同時,結果爲 1 ,不然爲 0。
mysql> select 10 ^ 15,1 ^ 0,1^1;
四、位左移運算符(<<)
使指定的二進制位都左移指定的位數,左移指定位以後,左邊高位的數值將被移出並丟棄,右邊低位空出的位置用 0 補齊。
mysql> select 1<<2,4<<2;
在上述位左移運算中,1的二進制值爲00000001,左移兩位以後變成00000100,即十進制數4;4的二進制值爲00000100,左移兩位以後變成00010000,即十進制數16。
五、位右移運算符(>>)
使指定的二進制位都右移指定的位數,右移指定位以後,右邊低位的數值將被移出並丟棄,左邊高位空出的位用 0 補齊。
mysql> select 1 >> 1,16 >> 2;
六、位取反運算符(~)
將對應的二進制數逐位反轉,即 1 取反後變 0 ,0 取反後變 1。
mysql> select 5 &~1;
關於上述的返回值解釋:SQL語句是將5和進行位取反的數字1進行位與運算(&),位於運算的原則是對應的二進制位都位1,則該位爲1,不然爲0,5的二進制數爲0101,1的二進制數爲0001,1進行位取反後的值就是1110,那麼0101和1110進行位與運算的結果就是0100,也就是4。
注:最低優先級爲:":="
注:最低優先級爲:":="
注:最低優先級爲:":="
最高優先級爲: !、BINARY、 COLLATE。
最高優先級爲: !、BINARY、 COLLATE。
最高優先級爲: !、BINARY、 COLLATE。