提示:表達式操作符,在MySQL的表達式中,如果某個數據值的類型與上下文所要求的類型不相符,MySQL則會根據將要進行的操作自動地對數據值進行類型轉換。
1.表達式操作符
Table 1 算術操作符
操作符 語法 含義
+ a + b 相加
- a - b 相減
- - a 求負
* a * b 乘法
/ a / b 除法
% a % b 求余
Table 2. 邏輯操作符
操作符 語法 含義
AND 或 && a AND b 或 a && b 邏輯與,若兩個操作數同時為真,則為真
OR 或 || a OR b 或 a || b 邏輯或,只要有一個操作數為真,則為真
XOR a XOR b 邏輯異或,若有且僅有一個操作數為真,則為真
NOT 或 ! NOT a 或 !a 邏輯非,若操作數為假,則為真
Table 3. 位操作符
操作符 語法 含義
& a & b 按位與,若操作數同位同為1,則該位為1
| a | b 按位或,若操作數同位有一位為1,則該位為1
^ a ^ b 按拉異或,若操作數同一位分別為1和0,則該位為1
<< a << b 把a中的各個位左移b個位置
>> a >> b 把a中的各個位右移b個位置
Table 4. 比較操作符
操作符 語法 含義
= a = b 若兩個操作數相等,則為真
<=> a <=> b 若兩個操作數相等,則為真,可用於NULL值比較
!= 或 <> a != b 或 a <> b 若兩個操用數不等,則為真
< a < b 若a小於b,則為真
<= a <= b 若a小於或等於b,則為真
> a > b 若a大於b,則為真
>= a > b 若a大於或等於b,則為真
IN a IN (b1,b2,...) 若a等於b1,b2,...中的某一個,則為真
BETWEEN a BETWEEN b AND c 若a在b和c之間(包括b和c),則為真
NOT BETWEEN a NOT BETWEEN b AND c 若a不在b和c之間(包括b和c),則為真
LIKE a LIKE b SQL模式匹配,若a匹配b,則為真
NOT LIKE a NOT LIKE b SQL模式匹配,若a不匹配b,則為真
REGEXP a REGEXP b 正則表達式匹配,若a匹配b,則為真
NOT REGEXP a NOT REGEXP b 正則表達式匹配,若a不匹配b,則為真
IS NULL a IS NULL 若a為NULL,則為真
IS NOT NULL a IS NOT NULL 若a不為NULL,則為真
LIKE模式匹配中的“%”匹配任意個字符,“_”匹配一個字符。匹配不區分大小寫字符。
Table 5. 操作符優先級(由高至低排列)
操作符
BINARY,COLLATE
NOT、!
^
XOR
-(一元求負操作符)、~(一元取反操作符)
*、/、%
+、-
<<、>>
&
|
<、<=、=、<=>、!=、<>、>=、>、IN、IS、LIKE、REGEXP、RLIKE
BETWEEN、CASE、WHEN、THEN、ELSE
AND、&&
OR、||
:=
2. 類型轉換
在MySQL的表達式中,如果某個數據值的類型與上下文所要求的類型不相符,MySQL則會根據將要進行的操作自動地對數據值進行類型轉換。如:
1 + '2' 會轉換成1 + 2 = 3
1+ 'abc' 會轉換成1 + 0 = 1 由於abc不能轉換成任何的值,所以默認為0
MySQL會根據表達式上下文的要求,把字符串和數值自動轉換為日期和時間值
對於超范圍或非法的值,MySQL也會進行轉換,但轉換出來的結果是錯誤的。出現該情況時,MySQL會提示警告信息,我們可捕獲該信息以進行相應的處理。