個人MYSQL學習心得(五) 運算符

MYSQL中的運算符不少,這一節主要講MYSQL中有的,而SQLSERVER沒有的運算符mysql


安全等於運算符(<=>)正則表達式

這個操做符和=操做符執行相同的比較操做,不過<=>能夠用來判斷NULL值。sql

在兩個操做數均爲NULL時,其返回值爲1而不爲NULL;數據庫

而當一個操做數爲NULL時,其返回值爲0而不爲NULL。安全

下面分別是 SELECT NULL <=>1   SELECT 1<=>0  SELECT NULL <=>NULL 的執行結果函數

在兩個操做數均爲NULL時,其返回值爲1而不爲NULL;工具

 


LEAST運算符sqlserver

語法格式爲:LEAST(值1,值2,...值n),其中值n表示參數列表中有n個值。在有兩個或多個參數的狀況下,返回最小值。測試

假如任意一個自變量爲NULL,則LEAST()的返回值爲NULLspa

 

使用LEAST運算符進行大小判斷,SQL語句以下:

SELECT LEAST(2,0),LEAST('a','b','c'),LEAST(10,NULL)

由結果能夠看到,當參數中是整數或者浮點數時,LEAST將返回其中最小的值;

當參數爲字符串時,返回字母中順序最靠前的字符;

當比較值列表中有NULL時,不能判斷大小,返回值爲NULL

 


GREATEST運算符

語法格式爲: GREATEST(值1,值2,...值n),其中n表示參數列表中有n個值。

在有兩個或多個參數的狀況下,返回最大值。

假如任意一個自變量爲NULL,則GREATEST()的返回值爲NULL

 

使用GREATEST運算符進行大小判斷,SQL語句以下:

SELECT GREATEST(2,0),GREATEST('a','b','c'),GREATEST(10,NULL)

 

 

由結果能夠看到,當參數中是整數或者浮點數時,GREATEST將返回其中最大的值;

當參數爲字符串時,返回字母中順序最靠後的字符;

當比較值列表中有NULL時,不能判斷大小,返回值爲NULL


REGEXP 運算符

在SQLSERVER裏是沒有正則函數或者運算符的,MYSQL在這方面的確比較完善

用來匹配字符串,語法格式爲:expr REGEXP  匹配條件,若是expr知足匹配條件,返回1;

若是不知足,則返回0;

若expr或匹配條件任意一個爲NULL,則結果爲NULL

 

經常使用的幾種通配符:

(1)'^'匹配以該字符後面的字符開頭的字符串

(2)'$'匹配以該字符後面的字符結尾的字符串

(3)'.'匹配任何一個單字符

(4)'[...]'匹配在方括號內的任何字符。例如,「[abc]" 匹配a、b或c。

字符的範圍能夠使用一個'-',「[a-z]」匹配任何字母,而「[0-9]」匹配任何數字

(5)'*' 匹配零個或多個在他前面的字符。例如,「x*」匹配任何數量的'*'字符,「[0-9]*」匹配任何數量的數字,

而「.*」匹配任何數量的任何字符。

 

使用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裏,與運算符是AND或者& ;或運算符是OR或者|

http://sqlfool.com/2009/02/bitwise-operations/

 View Code

 

 

異或運算符:XOR

當任意一個操做數爲NULL時,返回值爲NULL;對於非NULL的操做數,若是兩個操做數都是非0值或者都是0值,則返回結果爲0;

若是一個爲0值,另外一個爲非0值,返回結果爲1

 

使用異或運算符XOR進行邏輯判斷,SQL語句以下

SELECT 1 XOR 1, 0 XOR 0,1 XOR 0,1 XOR NULL,1 XOR 1 XOR 1

 

由結果能夠看到‘1 XOR 1’和‘0 XOR 0’中運算符兩邊的操做數都爲非零值,或者都是零值,所以返回0;

'1 XOR 0'中兩邊的操做數,一個爲0值,另外一個爲非0值,返回結果爲1;

'1 XOR NULL'中有一個操做數爲NULL,返回結果爲NULL;

'1 XOR 1 XOR 1'中有多個操做數,運算符相同,所以運算符從左到右依次計算,'1 XOR 1'的結果爲0,再與1進行異或運算,所以結果爲1。

 

TIPS: a XOR b的計算等同於(a AND (NOT b))或者(NOT a AND ( b))


位運算符

因爲比較少用到,這裏只作簡單介紹

位運算符是用來對二進制字節中的位進行測試、移位或者測試處理

MYSQL中提供的位運算有

按位或(|)

按位與(&)

按位異或(^)

按位左移(<<)

按位右移(>>)

按位取反(~):反轉全部比特

 

TIPS:能夠使用BIN()=binary函數查看一個十進制數的二進制表示

例如20這個數字 SELECT BIN(20) 

二進制表示爲:10100

 

一樣 sqlserver也是有位運算符的,可是沒有mysql那麼多,以下

DECLARE @i BITSET @i=0SELECT @i | 3 AS '按位或'SELECT @i & 3 AS '按位與'SELECT @i ^ 3 AS '按位異或'SELECT ~@i AS '非'SET @i=1SELECT ~@i AS '非'


特別提示

某一些MYSQL中的特殊字符須要用轉義字符才能插入數據庫,不然產生意料以外的結果。

下面的特殊字符須要在輸入時加反斜線符號開頭

輸入單引號須要:\'

輸入雙引號須要:\''

輸入反斜槓:\\

輸入回車符:\r

輸入換行符:\n

輸入製表符:\tab

輸入退格符:\b

在插入這些特殊字符到數據庫以前必定要進行轉義處理

在SQLSERVER裏,這些特殊字符不是在前面加反斜槓\,而是加單引號'

 

例如插入一個單引號,加了反斜槓,插入成功

INSERT INTO table_1(NAME) VALUES('\'')

SELECT * FROM table_1


總結

這一節簡單介紹了MYSQL裏的一些運算符和特殊字符,而且比較了與SQLSERVER的區別

相關文章
相關標籤/搜索