MYSQL 運(yùn)算符總結(jié)
1、算數(shù)運(yùn)算符
MySQL支持的算術(shù)運(yùn)算符:
|
運(yùn)算符
|
作用
|
|
+
|
加法
|
|
-
|
減法
|
|
*
|
乘法
|
|
/,DIV
|
除法,返回商
|
|
%,MOD
|
除法,返回余數(shù)
|
例1: +,-,*,/,%,
mysql> select 0.1+0.333,0.1-0.333,0.1*0.333,1/2,1%2; +-----------+-----------+-----------+--------+------+ | 0.1+0.333 | 0.1-0.333 | 0.1*0.333 | 1/2 | 1%2 | +-----------+-----------+-----------+--------+------+ | 0.433 | -0.233 | 0.0333 | 0.5000 | 1 | +-----------+-----------+-----------+--------+------+ 1 row in set (0.05 sec)
例2:除法運(yùn)算中,如果除數(shù)為0將是返回NULL
mysql> select 1/0; +------+ | 1/0 | +------+ | NULL | +------+ 1 row in set (0.00 sec)
例3:模運(yùn)算的另外一種形式MOD(a,b) 和a%b相同
mysql> select 1%2,mod(1,2); +------+----------+ | 1%2 | mod(1,2) | +------+----------+ | 1 | 1 | +------+----------+ 1 row in set (0.00 sec)
2、比較運(yùn)算符
MySQL支持的比較運(yùn)算符:
|
運(yùn)算符
|
作用
|
|
=
|
等于 |
|
<>或!=
|
不等于
|
|
<=>
|
NULL 安全的等于(NULL-safe)
|
|
<
|
小于
|
|
<=
|
小于等于
|
|
>
|
大于
|
|
>=
|
大于等于
|
|
BETWEEN
|
存在與指定范圍
|
|
IN
|
存在于指定集合
|
|
IS NULL
|
為 NULL
|
|
IS NOT NULL
|
不為 NULL
|
|
LIKE
|
通配符匹配
|
|
REGEXP 或 RLIKE
|
正則表達(dá)式匹配
|
例1:“<>” 和 “=” 相反,如果兩則操作不等 返回結(jié)果為1,否則返回結(jié)果0,“NULL”不能用于“<>”比較
mysql> select 1<>0,1<>1,null<>null; +------+------+------------+ | 1<>0 | 1<>1 | null<>null | +------+------+------------+ | 1 | 0 | NULL | +------+------+------------+ 1 row in set (0.00 sec)
例2: “<=>”安全等于運(yùn)算符和“=”操作相同返回1,區(qū)別在于“<=>”在值為null的時候也可以做比較
mysql> select 1<=>1,1<=>0,null<=>null; +-------+-------+-------------+ | 1<=>1 | 1<=>0 | null<=>null | +-------+-------+-------------+ | 1 | 0 | 1 | +-------+-------+-------------+ 1 row in set (0.02 sec)
例3: “<”當(dāng)左側(cè)小于右側(cè)時,返回1
mysql> select 'a'<'b','A'<'b','bdf'<'c',1<2; +---------+---------+-----------+-----+ | 'a'<'b' | 'A'<'b' | 'bdf'<'c' | 1<2 | +---------+---------+-----------+-----+ | 1 | 1 | 1 | 1 | +---------+---------+-----------+-----+ 1 row in set (0.02 sec)
例4:between,格式為“a BETWEEN min AND max”,表示a大于等于min并且小于等于max的時候,返回1,否則返回0
mysql> select 10 between 10 and 20,9 between 10 and 20; +----------------------+---------------------+ | 10 between 10 and 20 | 9 between 10 and 20 | +----------------------+---------------------+ | 1 | 0 | +----------------------+---------------------+ 1 row in set (0.01 sec)
例5:regexp,格式為“str REGEXP str_pat”,表示str字符串中含有str_pat相匹配的字符串時,則返回1,否則返回0
mysql> select 'abcdeef' regexp 'ab','abcdef' regexp 'g','abcedf' regexp 'df'; +-----------------------+---------------------+----------------------+ | 'abcdeef' regexp 'ab' | 'abcdef' regexp 'g' | 'abcedf' regexp 'df' | +-----------------------+---------------------+----------------------+ | 1 | 0 | 1 | +-----------------------+---------------------+----------------------+ 1 row in set (0.01 sec)
其他的使用簡單,直接上語法,示例就不寫了
in,使用格式為“a IN (value1,value2,…)”IS NULL,使用格式為“a IS NULL”IS NOT NULL,使用格式為“a IS NOT NULL”LIKE,使用格式為“a LIKE %123%”
3、邏輯運(yùn)算符
MySQL中的邏輯運(yùn)算符:
|
運(yùn)算符
|
作用
|
|
NOT 或!
|
邏輯非
|
|
AND 或&&
|
邏輯與
|
|
OR 或 ||
|
邏輯或
|
|
XOR
|
邏輯異或
|
例1: ““NOT”或“!”表示邏輯非。返回和操作數(shù)相反的結(jié)果。當(dāng)操作為0,則返回1;當(dāng)操作為1,則返回0,但是NOT NLLL返回null
mysql> select not 0,!0,not 1,not null; +-------+----+-------+----------+ | not 0 | !0 | not 1 | not null | +-------+----+-------+----------+ | 1 | 1 | 0 | NULL | +-------+----+-------+----------+ 1 row in set (0.00 sec)
例2: “AND”和“&&”表示邏輯與運(yùn)算,當(dāng)操作數(shù)均為非零值,返回結(jié)果1,否則返回0,當(dāng)操作數(shù)中有任意一個為NULL,其中一個值如果為0,返回0;其他值都是>0的數(shù)值,另外有NULL,則返回NULL
mysql> select (1 and 1),(0 and 1),(3 and 1),(0 and null),(1 and null); +-----------+-----------+-----------+--------------+--------------+ | (1 and 1) | (0 and 1) | (3 and 1) | (0 and null) | (1 and null) | +-----------+-----------+-----------+--------------+--------------+ | 1 | 0 | 1 | 0 | NULL | +-----------+-----------+-----------+--------------+--------------+ 1 row in set (0.00 sec) mysql> select 1 and NULL and 0; +------------------+ | 1 and NULL and 0 | +------------------+ | 0 | +------------------+ 1 row in set (0.00 sec) mysql> select 1 and NULL and 3; +------------------+ | 1 and NULL and 3 | +------------------+ | NULL | +------------------+ 1 row in set (0.00 sec)
例3: “OR”或“||”表示邏輯或運(yùn)算。當(dāng)操作數(shù)均不為NULL時,任意一方非零,則結(jié)果為1,否則為0;當(dāng)有一個操作數(shù)為NULL,如果另一個操作數(shù)非零,則結(jié)果為1,否則結(jié)果為NULL
mysql> select (1 or 0),(0 or 0),(1 or NULL),(0 or NULL),(NULL or NULL); +----------+----------+-------------+-------------+----------------+ | (1 or 0) | (0 or 0) | (1 or NULL) | (0 or NULL) | (NULL or NULL) | +----------+----------+-------------+-------------+----------------+ | 1 | 0 | 1 | NULL | NULL | +----------+----------+-------------+-------------+----------------+ 1 row in set (0.00 sec)
例4:XOR表示邏輯異或。當(dāng)任意一個操作數(shù)為 NULL 時,返回值為 NULL。對于非 NULL 的操作數(shù),如果兩個的邏輯真假值相異,則返回結(jié)果 1;否則返回 0。
mysql> select (0 xor 0),(1 xor 0),(1 xor 1),(1 xor null),(0 xor null),(null xor null); +-----------+-----------+-----------+--------------+--------------+-----------------+ | (0 xor 0) | (1 xor 0) | (1 xor 1) | (1 xor null) | (0 xor null) | (null xor null) | +-----------+-----------+-----------+--------------+--------------+-----------------+ | 0 | 1 | 0 | NULL | NULL | NULL | +-----------+-----------+-----------+--------------+--------------+-----------------+ 1 row in set (0.00 sec)
4、位運(yùn)算符
MySQL支持的位運(yùn)算符:
|
運(yùn)算符
|
作用 |
|
&
|
位與(位 AND)
|
|
|
|
位或 (位 OR )
|
|
^
|
位異或(位 XOR)
|
|
~
|
位取反
|
|
>>
|
位右移
|
|
<<
|
位左移
|
例1: “位與”對多個操作數(shù)的二進(jìn)制位作邏輯與操作。2&3,2的二進(jìn)制數(shù)為10,3的二進(jìn)制數(shù)為11,將此做與操作,結(jié)果還是10,轉(zhuǎn)換為十進(jìn)制結(jié)果就是2
mysql> select 2&3; +-----+ | 2&3 | +-----+ | 2 | +-----+ 1 row in set (0.01 sec)
例2: “位或”對多個操作數(shù)的二進(jìn)制位作邏輯或操作。2&3,2的二進(jìn)制數(shù)為10,3的二進(jìn)制數(shù)為11,將此做與操作,結(jié)果就變成11,轉(zhuǎn)換為十進(jìn)制結(jié)果就是3
mysql> select 2|3; +-----+ | 2|3 | +-----+ | 3 | +-----+ 1 row in set (0.00 sec)
例3: “位異或”對多個操作數(shù)的二進(jìn)制位作異或操作。2^3 ,2的二進(jìn)制數(shù)為10,3的二進(jìn)制數(shù)為11,10^11結(jié)果就是01,轉(zhuǎn)換為十進(jìn)制結(jié)果就是1
mysql> select 2^3; +-----+ | 2^3 | +-----+ | 1 | +-----+ 1 row in set (0.01 sec)
例4: “位取反”對操作數(shù)的二進(jìn)制位做NOT操作,這里的操作數(shù)只能是一位,解釋:在mysql中常亮數(shù)字默認(rèn)會以8字節(jié)表示,8個字節(jié)就是64位,而常量1的二進(jìn)制 就是前面63個0,1個1,位去反后就是63個1,1個0,轉(zhuǎn)換為二進(jìn)制后就是 18446744073709551614,
mysql> select ~1,~18446744073709551614
-> ;
+----------------------+-----------------------+
| ~1 | ~18446744073709551614 |
+----------------------+-----------------------+
| 18446744073709551614 | 1 |
+----------------------+-----------------------+
1 row in set (0.01 sec)
mysql> select bin(18446744073709551614);
+------------------------------------------------------------------+
| bin(18446744073709551614) |
+------------------------------------------------------------------+
| 1111111111111111111111111111111111111111111111111111111111111110 |
+------------------------------------------------------------------+
1 row in set (0.03 sec)
例5: “位右移”對左操作數(shù)向右移動操作數(shù)指定的位數(shù)。例如100>>3,對100的二進(jìn)制數(shù)0001100100右移動3位,0000001100,轉(zhuǎn)換為二進(jìn)制數(shù)就是12:
mysql> select 100>>3; +--------+ | 100>>3 | +--------+ | 12 | +--------+ 1 row in set (0.00 sec)
例6: “位左移”對左操作數(shù)向左移動操作數(shù)指定的位數(shù)。例如100<<3,對100的二進(jìn)制數(shù)0001100100000右移動3位,1100100000000,轉(zhuǎn)換為二進(jìn)制數(shù)就是800:
mysql> select 100<<3; +--------+ | 100<<3 | +--------+ | 800 | +--------+ 1 row in set (0.00 sec)
5、運(yùn)算符的優(yōu)先級
MySQL中的運(yùn)算符優(yōu)先級:
|
優(yōu)先級順序
|
運(yùn)算符
|
| 1 |
:=
|
| 2 |
||, OR, XOR
|
| 3 |
&&, AND
|
| 4 |
NOT
|
| 5 |
BETWEEN, CASE, WHEN, THEN, ELSE
|
| 6 |
=, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
|
| 7 |
|
|
| 8 |
&
|
| 9 |
<<, >>
|
| 10 |
-, +
|
| 11 |
*, /, DIV, %, MOD
|
| 12 |
^
|
| 13 |
- (一元減號), ~ (一元比特反轉(zhuǎn))
|
| 14 |
!
|
到此這篇關(guān)于MYSQL 運(yùn)算符總結(jié)的文章就介紹到這了,更多相關(guān)MYSQL 運(yùn)算符內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信