首頁  >  文章  >  資料庫  >  MySQL最佳化—運算子具體詳解(圖)

MySQL最佳化—運算子具體詳解(圖)

黄舟
黄舟原創
2017-03-10 10:02:221003瀏覽

MySQL最佳化—運算子具體詳解(圖)

安全性等於運算子(96b4fef55684b9312718d5de63fb7121)

這個運算子和=運算子執行相同的比較運算,不過96b4fef55684b9312718d5de63fb7121可以用來判斷NULL值。

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

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

以下分別是 SELECT NULL 96b4fef55684b9312718d5de63fb71211   SELECT196b4fef55684b9312718d5de63fb7121#0  SELECT#NULL96b4fef55684b9312718d5de63fb7121NULL 的執行結果

在兩個運算元均為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;

注意:正则表达式是一个可以进行复杂查询的强大工具,相对于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中提供的位运算有

按位或(|)

按位与(&)

按位异或(^)

按位左移(63925bc6f8da241ea167fd1069c246ca>)

按位取反(~):反转所有比特

TIPS:可以使用BIN()=binary函数查看一个十进制数的二进制表示

例如20这个数字 SELECT BIN(20) 

二进制表示为:10100

特别提示

某一些MYSQL中的特殊字符需要用转义字符才能插入数据库,否则产生意料之外的结果。

下面的特殊字符需要在输入时加反斜线符号开头

输入单引号需要:\'

输入双引号需要:\''

输入反斜杠:\\

输入回车符:\r

输入换行符:\n

输入制表符:\tab

输入退格符:\b

在插入这些特殊字符到数据库之前一定要进行转义处理

例如插入一个单引号,加了反斜杠,插入成功

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

SELECT * FROM table_1



以上是MySQL最佳化—運算子具體詳解(圖)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn