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會提示警告信息,我們可捕獲該信息以進行相應的處理。