MySQL 常用运算符
MySQL 數(shù)據(jù)庫中的表結(jié)構(gòu)確立后,表中的數(shù)據(jù)代表的意義就已經(jīng)確定。而通過 MySQL 運(yùn)算符進(jìn)行運(yùn)算,就可以獲取到表結(jié)構(gòu)以外的另一種數(shù)據(jù)。
例如,學(xué)生表中存在一個(gè) birth 字段,這個(gè)字段表示學(xué)生的出生年份。而運(yùn)用 MySQL 的算術(shù)運(yùn)算符用當(dāng)前的年份減學(xué)生出生的年份,那么得到的就是這個(gè)學(xué)生的實(shí)際年齡數(shù)據(jù)。
MySQL 支持 4 種運(yùn)算符,分別是:
1 算術(shù)運(yùn)算符
執(zhí)行算術(shù)運(yùn)算,例如:加、減、乘、除等。
2 比較運(yùn)算符
包括大于、小于、等于或者不等于,等等。主要用于數(shù)值的比較、字符串的匹配等方面。例如:LIKE、IN、BETWEEN AND 和 IS NULL 等都是比較運(yùn)算符,還包括正則表達(dá)式的 REGEXP 也是比較運(yùn)算符。
3 邏輯運(yùn)算符
包括與、或、非和異或等邏輯運(yùn)算符。其返回值為布爾型,真值(1 或 true)和假值(0 或 false)。
4 位運(yùn)算符
包括按位與、按位或、按位取反、按位異或、按位左移和按位右移等位運(yùn)算符。位運(yùn)算必須先將數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制,然后在二進(jìn)制格式下進(jìn)行操作,運(yùn)算完成后,將二進(jìn)制的值轉(zhuǎn)換為原來的類型,返回給用戶。
算術(shù)運(yùn)算符
算術(shù)運(yùn)算符是 SQL 中最基本的運(yùn)算符,MySQL 中的算術(shù)運(yùn)算符如下表所示。
| + | 加法運(yùn)算 |
| - | 減法運(yùn)算 |
| * | 乘法運(yùn)算 |
| / | 除法運(yùn)算,返回商 |
| % | 求余運(yùn)算,返回余數(shù) |
比較運(yùn)算符
比較運(yùn)算符的語法格式為:
<表達(dá)式1> {= | < | <= | > | >= | <=> | < > | !=} <表達(dá)式2>MySQL 支持的比較運(yùn)算符如下表所示。
| = | 等于 |
| < | 小于 |
| <= | 小于等于 |
| > | 大于 |
| >= | 大于等于 |
| <=> | 安全的等于,不會(huì)返回 UNKNOWN |
| <> 或!= | 不等于 |
| IS NULL 或 ISNULL | 判斷一個(gè)值是否為 NULL |
| IS NOT NULL | 判斷一個(gè)值是否不為 NULL |
| LEAST | 當(dāng)有兩個(gè)或多個(gè)參數(shù)時(shí),返回最小值 |
| GREATEST | 當(dāng)有兩個(gè)或多個(gè)參數(shù)時(shí),返回最大值 |
| BETWEEN AND | 判斷一個(gè)值是否落在兩個(gè)值之間 |
| IN | 判斷一個(gè)值是IN列表中的任意一個(gè)值 |
| NOT IN | 判斷一個(gè)值不是IN列表中的任意一個(gè)值 |
| LIKE | 通配符匹配 |
| REGEXP | 正則表達(dá)式匹配 |
下面分別介紹不同的比較運(yùn)算符的使用方法。
1 等于運(yùn)算符“=”
等號(hào)“=”用來判斷數(shù)字、字符串和表達(dá)式是否相等。如果相等,返回值為 1,否則返回值為 0。
數(shù)據(jù)進(jìn)行比較時(shí),有如下規(guī)則:
若有一個(gè)或兩個(gè)參數(shù)為 NULL,則比較運(yùn)算的結(jié)果為 NULL。若同一個(gè)比較運(yùn)算中的兩個(gè)參數(shù)都是字符串,則按照字符串進(jìn)行比較。若兩個(gè)參數(shù)均為正數(shù),則按照整數(shù)進(jìn)行比較。若一個(gè)字符串和數(shù)字進(jìn)行相等判斷,則 MySQL 可以自動(dòng)將字符串轉(zhuǎn)換成數(shù)字。2 安全等于運(yùn)算符“<=>”
用于比較兩個(gè)表達(dá)式的值。當(dāng)兩個(gè)表達(dá)式的值中有一個(gè)為空值或者都為空值時(shí),將返回 UNKNOWN。
對(duì)于運(yùn)算符“<=>”,當(dāng)兩個(gè)表達(dá)式彼此相等或都等于空值時(shí),比較結(jié)果為 TRUE;若其中一個(gè)是空值或者都是非空值但不相等時(shí),則為 FALSE,不會(huì)出現(xiàn) UNKNOWN 的情況。
3 不等于運(yùn)算符“<>”或者“!=”
“<>”或者“!=”用于數(shù)字、字符串、表達(dá)式不相等的判斷。如果不相等,返回值為 1;否則返回值為 0。這兩個(gè)運(yùn)算符不能用于判斷空值(NULL)。
4 小于或等于運(yùn)算符“<=”
“<=”用來判斷左邊的操作數(shù)是否小于或等于右邊的操作數(shù)。如果小于或等于,返回值為 1;否則返回值為 0。“<=”不能用于判斷空值。
5 小于運(yùn)算符“<”
“<”用來判斷左邊的操作數(shù)是否小于右邊的操作數(shù)。如果小于,返回值為 1;否則返回值為 0。“<”不能用于判斷空值。
6 大于或等于運(yùn)算符“>=”
“>=”用來判斷左邊的操作數(shù)是否大于或等于右邊的操作數(shù)。如果大于或等于,返回值為 1;否則返回值為 0。“>=”不能用于判斷空值。
7 大于運(yùn)算符“>”
“>”用來判斷左邊的操作數(shù)是否大于右邊的操作數(shù)。如果大于,返回值為 1;否則返回值為 0。“>”不能用于判斷空值。
8 IS NULL(或者 ISNULL)
IS NULL 和 ISNULL 用于檢驗(yàn)一個(gè)值是否為 NULL,如果為 NULL,返回值為 1;否則返回值為 0。
9 IS NOT NULL
IS NOT NULL 用于檢驗(yàn)一個(gè)值是否為非 NULL,如果為非 NULL,返回值為 1;否則返回值為 0。
10 BETWWEN AND
語法格式為:
若<表達(dá)式>大于或等于<最小值>,且小于或等于<最大值>,則 BETWEEN 的返回值為 1;否則返回值為 0。
11 LEAST
語法格式為:
其中,值 n 表示參數(shù)列表中有 n 個(gè)值。存在兩個(gè)或多個(gè)參數(shù)的情況下,返回最小值。若任意一個(gè)自變量為 NULL,則 LEAST() 的返回值為 NULL。
12 GREATEST
語法格式為:
其中,值 n 表示參數(shù)列表中有 n 個(gè)值。存在兩個(gè)或多個(gè)參數(shù)的情況下,返回最大值。若任意一個(gè)自變量為 NULL,則 GREATEST() 的返回值為 NULL。
13 IN
IN 運(yùn)算符用來判斷操作數(shù)是否為 IN 列表中的一個(gè)值。如果是,返回值為 1;否則返回值為 0。
14 NOT IN
NOT IN 運(yùn)算符用來判斷表達(dá)式是否為 IN 列表中的一個(gè)值。如果不是,返回值為 1;否則返回值為 0。
邏輯運(yùn)算符
在 SQL 語言中,所有邏輯運(yùn)算符求值所得的結(jié)果均為 TRUE、FALSE 或 NULL。在 MySQL 中分別體現(xiàn)為 1(TRUE)、0(FALSE)和 NULL。
MySQL 中的邏輯運(yùn)算符如下表所示。
| NOT 或者 ! | 邏輯非 |
| AND 或者 && | 邏輯與 |
| OR 或者 | |
| XOR | 邏輯異或 |
下面分別介紹不同的邏輯運(yùn)算符的使用方法。
1 NOT 或者 !
邏輯非運(yùn)算符 NOT 或者 !,表示當(dāng)操作數(shù)為 0 時(shí),返回值為 1;當(dāng)操作數(shù)為非零值時(shí),返回值為 0;當(dāng)操作數(shù)為 NULL 時(shí),返回值為 NULL。
2 AND 或者 &&
邏輯與運(yùn)算符 AND 或者 &&,表示當(dāng)所有操作數(shù)均為非零值并且不為 NULL 時(shí),返回值為 1;當(dāng)一個(gè)或多個(gè)操作數(shù)為 0 時(shí),返回值為 0;其余情況返回值為 NULL。
3 OR 或者 ||
邏輯或運(yùn)算符 OR 或者 ||,表示當(dāng)兩個(gè)操作數(shù)均為非 NULL 值且任意一個(gè)操作數(shù)為非零值時(shí),結(jié)果為 1,否則結(jié)果為 0;當(dāng)有一個(gè)操作數(shù)為 NULL 且另一個(gè)操作數(shù)為非零值時(shí),結(jié)果為 1,否則結(jié)果為 NULL;當(dāng)兩個(gè)操作數(shù)均為 NULL 時(shí),所得結(jié)果為 NULL。
4 XOR
邏輯異或運(yùn)算符 XOR。當(dāng)任意一個(gè)操作數(shù)為 NULL 時(shí),返回值為 NULL;對(duì)于非 NULL 的操作數(shù),若兩個(gè)操作數(shù)都不是 0 或者都是 0 值,則返回結(jié)果為 0;若一個(gè)為 0,另一個(gè)不為非 0,則返回結(jié)果為 1。
位運(yùn)算符
位運(yùn)算符是用來對(duì)二進(jìn)制字節(jié)中的位進(jìn)行移位或者測試處理的。
MySQL 中提供的位運(yùn)算符如下表所示。
| 單豎杠 | 按位或 |
| & | 按位與 |
| ^ | 按位異或 |
| << | 按位左移 |
| >> | 按位右移 |
| ~ | 按位取反,反轉(zhuǎn)所有比特 |
下面分別介紹不同的位運(yùn)算符的使用方法。
1 位或運(yùn)算符“|”
位或運(yùn)算的實(shí)質(zhì)是將參與運(yùn)算的兩個(gè)數(shù)據(jù)按對(duì)應(yīng)的二進(jìn)制數(shù)逐位進(jìn)行邏輯或運(yùn)算。若對(duì)應(yīng)的二進(jìn)制位有一個(gè)或兩個(gè)為 1,則該位的運(yùn)算結(jié)果為 1,否則為 0。
2 位與運(yùn)算符“&”
位與運(yùn)算的實(shí)質(zhì)是將參與運(yùn)算的兩個(gè)數(shù)據(jù)按對(duì)應(yīng)的二進(jìn)制數(shù)逐位進(jìn)行邏輯與運(yùn)算。若對(duì)應(yīng)的二進(jìn)制位都為 1,則該位的運(yùn)算結(jié)果為 1,否則為 0。
3 位異或運(yùn)算符“^”
位異或運(yùn)算的實(shí)質(zhì)是將參與運(yùn)算的兩個(gè)數(shù)據(jù)按對(duì)應(yīng)的二進(jìn)制數(shù)逐位進(jìn)行邏輯異或運(yùn)算。對(duì)應(yīng)的二進(jìn)制位不同時(shí),對(duì)應(yīng)位的結(jié)果才為 1。如果兩個(gè)對(duì)應(yīng)位都為 0 或者都為 1,則對(duì)應(yīng)位的結(jié)果為 0。
4 位左移運(yùn)算符“<<”
位左移運(yùn)算符“<<”使指定的二進(jìn)制值的所有位都左移指定的位數(shù)。左移指定位數(shù)之后,左邊高位的數(shù)值將被移出并丟棄,右邊低位空出的位置用 0 補(bǔ)齊。
語法格式為表達(dá)式<<n,這里 n 指定值要移位的位數(shù)。
5 位右移運(yùn)算符“>>”
位右移運(yùn)算符“>>”使指定的二進(jìn)制值的所有位都右移指定的位數(shù)。右移指定位數(shù)之后,右邊高位的數(shù)值將被移出并丟棄,左邊低位空出的位置用 0 補(bǔ)齊。
語法格式為表達(dá)式>>n,這里 n 指定值要移位的位數(shù)。
6 位取反運(yùn)算符“~”
位取反運(yùn)算符的實(shí)質(zhì)是將參與運(yùn)算的數(shù)據(jù)按對(duì)應(yīng)的二進(jìn)制數(shù)逐位反轉(zhuǎn),即 1 取反后變 0,0 取反后變?yōu)?1。
運(yùn)算符的優(yōu)先級(jí)決定了不同的運(yùn)算符在表達(dá)式中計(jì)算的先后順序,下表列出了 MySQL 中的各類運(yùn)算符及其優(yōu)先級(jí)。
| 1 | =(賦值運(yùn)算)、:= |
| 2 | II、OR |
| 3 | XOR |
| 4 | &&、AND |
| 5 | NOT |
| 6 | BETWEEN、CASE、WHEN、THEN、ELSE |
| 7 | =(比較運(yùn)算)、<=>、>=、>、<=、<、<>、!=、 IS、LIKE、REGEXP、IN |
| 8 | 單豎杠 |
| 9 | & |
| 10 | <<、>> |
| 11 | -(減號(hào))、+ |
| 12 | *、/、% |
| 13 | ^ |
| 14 | -(負(fù)號(hào))、?(位反轉(zhuǎn)) |
| 15 | ! |
可以看出,不同運(yùn)算符的優(yōu)先級(jí)是不同的。一般情況下,級(jí)別高的運(yùn)算符優(yōu)先進(jìn)行計(jì)算,如果級(jí)別相同,MySQL 按表達(dá)式的順序從左到右依次計(jì)算。
另外,在無法確定優(yōu)先級(jí)的情況下,可以使用圓括號(hào)“()”來改變優(yōu)先級(jí),并且這樣會(huì)使計(jì)算過程更加清晰。
總結(jié)
以上是生活随笔為你收集整理的MySQL 常用运算符的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dev C++ 实现Hello Worl
- 下一篇: Java数组合并