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会提示警告信息,我们可捕获该信息以进行相应的处理。