MYSQL中的運算符很多,這一節(jié)主要講MYSQL中有的,而SQLSERVER沒有的運算符。
安全等于運算符(<=>)
這個操作符和=操作符執(zhí)行相同的比較操作,不過<=>可以用來判斷NULL值。
在兩個操作數(shù)均為NULL時,其返回值為1而不為NULL;
而當一個操作數(shù)為NULL時,其返回值為0而不為NULL。
下面分別是SELECTNULL<=>1SELECT1<=>0SELECTNULL<=>NULL的執(zhí)行結果
在兩個操作數(shù)均為NULL時,其返回值為1而不為NULL;
LEAST運算符
語法格式為:LEAST(值1,值2,...值n),其中值n表示參數(shù)列表中有n個值。在有兩個或多個參數(shù)的情況下,返回最小值。
假如任意一個自變量為NULL,則LEAST()的返回值為NULL
使用LEAST運算符進行大小判斷,SQL語句如下:
代碼如下:
SELECTLEAST(2,0),LEAST('a','b','c'),LEAST(10,NULL)
由結果可以看到,當參數(shù)中是整數(shù)或者浮點數(shù)時,LEAST將返回其中最小的值;
當參數(shù)為字符串時,返回字母中順序最靠前的字符;
當比較值列表中有NULL時,不能判斷大小,返回值為NULL
GREATEST運算符
語法格式為:GREATEST(值1,值2,...值n),其中n表示參數(shù)列表中有n個值。
在有兩個或多個參數(shù)的情況下,返回最大值。
假如任意一個自變量為NULL,則GREATEST()的返回值為NULL
使用GREATEST運算符進行大小判斷,SQL語句如下:
代碼如下:
SELECTGREATEST(2,0),GREATEST('a','b','c'),GREATEST(10,NULL)
由結果可以看到,當參數(shù)中是整數(shù)或者浮點數(shù)時,GREATEST將返回其中最大的值;
當參數(shù)為字符串時,返回字母中順序最靠后的字符;
當比較值列表中有NULL時,不能判斷大小,返回值為NULL
REGEXP運算符
在SQLSERVER里是沒有正則函數(shù)或者運算符的,MYSQL在這方面的確比較完善
用來匹配字符串,語法格式為:exprREGEXP匹配條件,如果expr滿足匹配條件,返回1;
如果不滿足,則返回0;
若expr或匹配條件任意一個為NULL,則結果為NULL
常用的幾種通配符:
(1)'^'匹配以該字符后面的字符開頭的字符串
(2)'$'匹配以該字符后面的字符結尾的字符串
(3)'.'匹配任何一個單字符
(4)'[...]'匹配在方括號內的任何字符。例如,“[abc]"匹配a、b或c。
字符的范圍可以使用一個'-',“[a-z]”匹配任何字母,而“[0-9]”匹配任何數(shù)字
(5)'*'匹配零個或多個在他前面的字符。例如,“x*”匹配任何數(shù)量的'*'字符,“[0-9]*”匹配任何數(shù)量的數(shù)字,
而“.*”匹配任何數(shù)量的任何字符。
使用REGEXP運算符進行字符串匹配運算,SQL語句如下:
代碼如下:
SELECT'ssky'REGEXP'^s','ssky'REGEXP'y$','ssky'REGEXP'.sky','ssky'REGEXP'[ab]';
由結果可以看到,指定匹配字符串為ssky。
'^s'表示匹配任何以字母s開頭的字符串,因此滿足匹配條件,返回1;
'y$'表示匹配任何以字母y結尾的字符串,因此滿足匹配條件,返回1;
'.sky'表示匹配任何以sky結尾,字符長度為4的字符串,因此滿足匹配條件,返回1;
'^s'表示匹配任何以字母s開頭的字符串,因此滿足匹配條件,返回1;
'[ab]'表示匹配任何包含字母a或者b的字符串,指定字符串中沒有字母a也沒有字母b,因此不滿足匹配條件,返回0;
TIPS:正則表達式是一個可以進行復雜查詢的強大工具,相對于LIKE字符串匹配,他可以使用更多的通配符類型
查詢結果更加靈活。
邏輯運算符
邏輯與運算符:AND或者&&
邏輯或運算符:OR或者||
上面兩個運算符就不說了,只是比SQLSERVER多了&&和||的寫法
異或運算符:XOR
當任意一個操作數(shù)為NULL時,返回值為NULL;對于非NULL的操作數(shù),如果兩個操作數(shù)都是非0值或者都是0值,則返回結果為0;
如果一個為0值,另一個為非0值,返回結果為1
使用異或運算符XOR進行邏輯判斷,SQL語句如下
代碼如下:
SELECT1XOR1,0XOR0,1XOR0,1XORNULL,1XOR1XOR1
由結果可以看到‘1XOR1'和‘0XOR0'中運算符兩邊的操作數(shù)都為非零值,或者都是零值,因此返回0;
'1XOR0'中兩邊的操作數(shù),一個為0值,另一個為非0值,返回結果為1;
'1XORNULL'中有一個操作數(shù)為NULL,返回結果為NULL;
'1XOR1XOR1'中有多個操作數(shù),運算符相同,因此運算符從左到右依次計算,'1XOR1'的結果為0,再與1進行異或運算,因此結果為1。
TIPS:aXORb的計算等同于(aAND(NOTb))或者(NOTaAND(b))
位運算符
由于比較少用到,這里只做簡單介紹,同樣位運算符在SQLSERVER里是沒有的
位運算符是用來對二進制字節(jié)中的位進行測試、移位或者測試處理
MYSQL中提供的位運算有
按位或(|)
按位與(&)
按位異或(^)
按位左移(<<)
按位右移(>>)
按位取反(~):反轉所有比特
TIPS:可以使用BIN()=binary函數(shù)查看一個十進制數(shù)的二進制表示
例如20這個數(shù)字SELECTBIN(20)
二進制表示為:10100
特別提示
某一些MYSQL中的特殊字符需要用轉義字符才能插入數(shù)據(jù)庫,否則產生意料之外的結果。
下面的特殊字符需要在輸入時加反斜線符號開頭
輸入單引號需要:\'
輸入雙引號需要:\''
輸入反斜杠:\\
輸入回車符:\r
輸入換行符:\n
輸入制表符:\tab
輸入退格符:\b
在插入這些特殊字符到數(shù)據(jù)庫之前一定要進行轉義處理
在SQLSERVER里,這些特殊字符不是在前面加反斜杠\,而是加單引號'
例如插入一個單引號,加了反斜杠,插入成功
代碼如下:
INSERTINTOtable_1(NAME)VALUES('\'')
SELECT*FROMtable_1
總結
這一節(jié)簡單介紹了MYSQL里的一些運算符和特殊字符,并且比較了與SQLSERVER的區(qū)別。
更多信息請查看IT技術專欄