MySQL最佳化之——運算子,mysql運算子

來源:互聯網
上載者:User

MySQL最佳化之——運算子,mysql運算子

轉載請註明出處:http://blog.csdn.net/l1028386804/article/details/46560499

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

這個操作符和=操作符執行相同的比較操作,不過<=>可以用來判斷NULL值。

在兩個運算元均為NULL時,其返回值為1而不為NULL;

而當一個運算元為NULL時,其返回值為0而不為NULL。

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

在兩個運算元均為NULL時,其返回值為1而不為NULL;


LEAST運算子

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

假如任意一個自變數為NULL,則LEAST()的返回值為NULL

使用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;

注意:Regex是一個可以進行複雜查詢的強大工具,相對於LIKE字串匹配,他可以使用更多的萬用字元類型,查詢結果更加靈活

邏輯運算子

邏輯與運算子:AND或者&&

邏輯或運算子:OR或者||

異或運算子: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。

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

位元運算符

由於比較少用到,這裡只做簡單介紹

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

MYSQL中提供的位元運算有

按位或(|)

按位與(&)

按位異或(^)

按位左移(<<)

按位右移(>>)

按位取反(~):反轉所有位元

TIPS:可以使用BIN()=binary函數查看一個十進位數的二進位表示

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

二進位表示為:10100

特別提示

某一些MYSQL中的特殊字元需要用逸出字元才能插入資料庫,否則產生意料之外的結果。

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

輸入單引號需要:\'

輸入雙引號需要:\''

輸入反斜線:\\

輸入斷行符號符:\r

輸入分行符號:\n

輸入定位字元:\tab

輸入退格符:\b

在插入這些特殊字元到資料庫之前一定要進行轉義處理

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

INSERT INTO table_1(NAME) VALUES('\'')SELECT * FROM table_1


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.