這篇文章主要介紹“數據庫中有哪幾種運算符”,在日常操作中,相信很多人在MySQL數據庫中有哪幾種運算符問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對大家解答”MySQL數據庫中有哪幾種運算符”的疑惑有所幫助!接下來(lái),請跟著(zhù)小編一起來(lái)學(xué)習吧!
前言:
MySQL數據庫中有以下幾種運算符:算術(shù)運算符;比較運算符;邏輯運算符;位運算符。
文章大綱:
一、算術(shù)運算符;
二、比較運算符;
三、邏輯運算符;
四、位運算符;
五、運算符優(yōu)先級
這篇文章將介紹這幾種運算符的作用。
注意:在除法運算和模運算中,如果除數為0,將是非法除法,返回結果為NULL。
示例:
mysql> create table t1(num int); mysql> insert into t1 values(64); mysql> select num,num+10,num-3,num*3,num%3,num/3 from t1;
返回的內容如下:
select語(yǔ)句中的條件語(yǔ)句經(jīng)常要使用比較運算符。通過(guò)這些比較運算符,可以判斷表中的哪些記錄時(shí)符合條件的,比較結果為真,則返回1,為假則返回0,比較結果不確定則返回NULL。
等于運算符用來(lái)判斷數字、字符串和表達式是否相等,如果相等,則返回值為1,否則返回值為0,如果有一個(gè)值是NULL,則比較結果是NULL。
mysql> select 1=0,'2'=2,(1+3)=(2+2),NULL=NULL;
這個(gè)操作符和等于運算符(=)的作用一致,只不過(guò)多了一個(gè)功能,就是可以判斷NULL值,如下:
mysql> select 1<=>0,'2'<=>2,(1+3)<=>(2+2),NULL<=>NULL;
返回結果如下:
不等于運算符用于判斷數字、字符串、表達式是否不相等,如果不相等則返回 1,否則返回 0 ,但是不能判斷 NULL 值。
mysql> SELECT 'good'<>'god', 1<>2, 4!=4, 5.5!=5, NULL<>NULL ;
IS NULL是 檢驗一個(gè)值是否為 NULL ,如果為 NULL ,返回值為 1,否則返回值為 0;
IS NOT NULL 檢驗一個(gè)值是否不為 NULL ,如果不為 NULL ,返回值為 1,否則返回值為 0。
mysql> SELECT NULL IS NULL, (10) IS NULL, 10 IS NOT NULL ;
返回的結果如下:
用于判斷一個(gè)值是否落在兩個(gè)值之間。
mysql> select 4 between 1 and 5,4 between 4 and 6,12 between 9 and 10;
返回的結果如下:
LEAST :當有兩個(gè)或多個(gè)參數時(shí),返回最小值,如果有一個(gè)值是 NULL ,則返回結果為 NULL;
GREATEST :當有兩個(gè)或多個(gè)參數時(shí),返回最大值,如果有一個(gè)值是 NULL ,則返回結果為 NULL。
mysql> select least(2,0),least('a','b','c'),least(10,NULL),greatest(2,0),greatest(10,NULL);
返回的結果如下:
IN :判斷一個(gè)值是否是 IN 列表中的任意一個(gè)值;
NOT IN :判斷一個(gè)值是否不是 IN 列表中的任意一個(gè)值。
mysql> select 2 in(3,5,8,2),2 not in(1,3,5);
返回的結果如下:
LIKE 運算符用來(lái)匹配字符串,如果匹配則返回 1,如果不匹配則返回 0;
LIKE 使用兩種通配符:'%' 用于匹配任何數目的字符,包括零字符 ; '_' 只能匹配一個(gè)字符。
mysql> select 'stud' like 'stu_','stud' like 's___','stud' like '%d';
返回結果如下:
1)REGEXP運算符用來(lái)匹配字符串,如果匹配則返回1,如果不匹配則返回0;
2)REGEXP 使用以下幾種通配符:
'^':用于匹配以什么開(kāi)頭的字符串;
'$':用以匹配以什么結尾的字符串;
'.':用于匹配任何一個(gè)單字符串;
'[...]':用于匹配在方括號內的任何字符;
'*'用于匹配零個(gè)或多個(gè)在它前面的字符;
mysql> select 'ssky' regexp '^s', 'ssky' regexp 'y$', 'ssky' regexp '.sky', 'ssky' regexp '[ab]' ;
返回的結果如下:
邏輯運算符用來(lái)判斷表達式的真假。如果表達式是真,結果返回 1。如果表達式是假,結果返回 0。
當操作數為 0 時(shí),所得值為 1;
當操作數為非 0 時(shí),所得值為 0;
當操作數為 NULL 時(shí),所得值為 NULL。
mysql> select not 10,!10,not(1-1),!(1-1),not 1+1,not null;
當所有操作數均為非零值、并且不為 NULL 時(shí),所得值為 1;
當一個(gè)或多個(gè)操作數為 0 時(shí),所得值為 0 ;
其余情況所得值為 NULL。
mysql> select 1 and -1,1 && 0,0 and null,1 && null;
當兩個(gè)操作數均為非 NULL 值,且任意一個(gè)操作數為非零值時(shí),結果為 1 ,否則為 0;
當有一個(gè)操作數為 NULL ,且另一個(gè)操作數為非零值時(shí),則結果為 1 ,否則結果為 NULL;
當兩個(gè)操作數均為 NULL 時(shí),則所得結果為 NULL。
mysql> select 1 or -1 or 0,1 || 2,0 or null,null|| null;
返回結果如下:
a XOR b 的計算等同于 ( a AND (NOT b) ) 或 ( (NOT a) AND b );
當任意一個(gè)操作數為 NULL 時(shí),返回值為 NULL;
對于非 NULL 的操作數,如果兩個(gè)操作數都是非 0 值或者都是 0 值,則返回結果為 0;
如果一個(gè)為 0 值,另一個(gè)為非 0 值,返回結果為 1。
mysql> select 1 xor 1,0 xor 0,1 xor 0,1 xor null,1 xor 1 xor 1;
返回結果如下:
位運算符是在二進(jìn)制數上進(jìn)行計算的運算符。位運算會(huì )先將操作數變成二進(jìn)制數,進(jìn)行位運算。然后再將計算結果從二進(jìn)制數變回十進(jìn)制數。
對應的二進(jìn)制位有一個(gè)或兩個(gè)為 1 ,則該位的運算結果為 1 ,否則為 0。
mysql> select 10|15,9|4|2; +-------+-------+ | 10|15 | 9|4|2 | <!--10的二進(jìn)制為1010,15的二進(jìn)制為1111,按位或運算之后結果為1111,即15--> +-------+-------+ <!--9的二進(jìn)制為1001,4為0100,2的二進(jìn)制為0010,按位或運算之后1111,即15--> | 15 | 15 | +-------+-------+ 1 row in set (0.00 sec)
對應的二進(jìn)制位都為 1 ,則該位的運算結果為 1 ,否則為 0。
mysql> select 10 & 15,9 & 4 & 2; +---------+-----------+ | 10 & 15 | 9 & 4 & 2 | +---------+-----------+ | 10 | 0 | +---------+-----------+ 1 row in set (0.00 sec)
對應的二進(jìn)制位不相同時(shí),結果為 1 ,否則為 0。
mysql> select 10 ^ 15,1 ^ 0,1^1;
使指定的二進(jìn)制位都左移指定的位數,左移指定位之后,左邊高位的數值將被移出并丟棄,右邊低位空出的位置用 0 補齊。
mysql> select 1<<2,4<<2;
返回的結果如下:
在上述位左移運算中,1的二進(jìn)制值為00000001,左移兩位之后變成00000100,即十進(jìn)制數4;4的二進(jìn)制值為00000100,左移兩位之后變成00010000,即十進(jìn)制數16。
使指定的二進(jìn)制位都右移指定的位數,右移指定位之后,右邊低位的數值將被移出并丟棄,左邊高位空出的位用 0 補齊。
mysql> select 1 >> 1,16 >> 2;
返回的結果如下:
將對應的二進(jìn)制數逐位反轉,即 1 取反后變 0 ,0 取反后變 1。
mysql> select 5 &~1;
關(guān)于上述的返回值解釋?zhuān)篠QL語(yǔ)句是將5和進(jìn)行位取反的數字1進(jìn)行位與運算(&),位于運算的原則是對應的二進(jìn)制位都位1,則該位為1,否則為0,5的二進(jìn)制數為0101,1的二進(jìn)制數為0001,1進(jìn)行位取反后的值就是1110,那么0101和1110進(jìn)行位與運算的結果就是0100,也就是4。
注:最低優(yōu)先級為:":="
最高優(yōu)先級為: !、BINARY、 COLLATE。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站