1. 算术运算符
MySQL支持的算术运算符
运算符
作用
+
加法
–
减法
*
乘法
/ , DIV
除法,返回商
% , MOD
除法,返回余数
SELECT 0.1 + 0.333 , 0.1 - 0.333 , 0.1 * 0.333 , 1 / 2 , 1 % 2 ;
" + "运算符用于获得一个或多个值的和.
" - "运算符用于从一个值中减去另一个值.
" * "运算符使数字相乘,得到两个或多个值的乘积.
" / "运算符用一个值除以另一个值得到商.
" % "运算符用一个值除以另外一个值得到余数.
在除法运算和模运算中,如果除数为0,将是非法除数,返回结果为NULL
" / " 会返回计算计算结果, " DIV " 返回的则是整数商;
a%b和MOD(a,b)的表达结果一样.
SELECT 8 / 5 , 8 DIV 5 , 1 % 2 , MOD ( 1 , 2 ) ;
2.比较运算符
运算符
作用
=
等于
<>或!=
不等于
<=>
NULL安全的等于(NULL-safe)
<
小于
<=
小于等于
>
大于
>=
大于等于
BETWEEN
存在指定范围
IN
存在指定集合
IS NULL
为NULL
IS NOT NULL
不为NULL
LIKE
通配符匹配
REGEXP 或 RLIKE
正则表达式匹配
"="运算符 ,用于比较运算符两侧的操作数是否相等,如果两侧操作数相等,则返回值为1,否则为0.注意NULL不能用于"="比较.
SELECT 1 = 0 , 1 = 1 , NULL = NULL ;
"<>"运算符 ,和"=“相反,如果两侧操作数不相等,则值为1,否则为0,NULL不能用于”<>"比较;
SELECT 1 <> 0 , 1 <> 1 , NULL <> NULL ;
"<=>"运算符 ,和"="类似,在操作数相等时值为1,不同之处在于即使操作的值为NULL也可以正确的比较.
SELECT 1 <=> 0 , 1 <=> 1 , NULL <=> NULL ;
"<"运算符 ,当左侧操作数小于右侧操作数时,返回值为1,否则为0.
SELECT 'c' < 'd' , 'c' < 'a' , 1 < 1 , 1 < 2 ;
"<="运算符 ,当左侧操作数小于等于右侧操作数时,返回值为1,否则为0.
SELECT 'c' <= 'd' , 'c' <= 'a' , 1 <= 1 , 1 <= 2 ;
">"运算符 ,当左侧操作数大于右侧操作数时,返回值为1,否则为0.
SELECT 'c' > 'd' , 'c' > 'a' , 1 > 1 , 1 > 2 ;
">="运算符 ,当左侧操作数大于等于右侧操作数时,返回值为1,否则为0.
SELECT 'c' >= 'd' , 'c' >= 'a' , 1 >= 1 , 1 >= 2 ;
"BETWEEN"运算符 的使用格式为"a BETWEEN min AND max",当a大于等于min并且小于等于max,则返回值为1,否则为0;当操作数a,min,max类型相同时,此表达式等价于(a >= min AND a <= max),当操作数类型不同时,比较时会遵循类型转换原则进行转换后,再进行比较运算.
SELECT 10 BETWEEN 10 AND 20 , 9 BETWEEN 10 AND 20 ;
"IN"运算符 的使用格式为"a IN(value1 , value2,…)",当a的值存在于列表中时,则整个比较表达式返回的值为1,否则为0.
SELECT 'a' IN ( 'a' , 'b' , 'c' ) , 1 IN ( 0 , 1 , 2 ) , 0 IN ( 1 , 2 ) ;
"IS NULL"运算符 的使用格式为"a IS NULL",当a的值为NULL时,则返回值1,否则返回0.
SELECT 0 IS NULL , NULL IS NULL ;
"IS NOT NULL"运算符 的使用格式为"a IS NOT NULL",和"IS NULL"相反,当a的值为不为NULL时,则返回值1,否则返回0.
SELECT 0 IS NOT NULL , NULL IS NOT NULL
"LIKE"运算符 的使用格式为"a LIKE ‘%123%’ " ,当a中含有字符串"123"时,则返回值为1,否则为0.
SELECT 123456 LIKE '123%' , 123456 LIKE '%123%' , 123456 LIKE '%321%' ;
"REGEXP"运算符 的使用格式为"str REGEXP str_pat",当str字符串中含有str_pat相匹配的字符串时,则返回值为1,否则为0.
SELECT 'abcdef' REGEXP 'ab' , 'abcdef' REGEXP 'xy' ;
3. 逻辑运算符
运算符
作用
NOT 或 !
逻辑非
AND 或 &&
逻辑与
OR 或 ||
逻辑或
XOR
逻辑异或
**NOT 或 !**表示逻辑非,返回和操作数相反的结果:当操作数为0(假),则返回值为1,否则为0.但有一个点除外,那就是NOT NULL的返回值为NULL.
SELECT NOT 0 , NOT 1 , NOT NULL ;
**AND 或 &&**表示逻辑与运算,当所有的操作数均为非0值,并且不为NULL时,计算所得结果为1;当一个或多个操作数为0时,所得结果为0;
SELECT 0 AND 0 , 0 AND 1 , 1 AND 1 , 1 AND NULL , 0 AND NULL , NULL AND 0 , NULL AND 1 ;
**OR 或 ||**表示逻辑或运算.当所有操作数均为非NULL值时,如果有任意一个操作数为非零值,则结果为1,否则为0,当有一个操作数为NULL时,如果另一个操作数为非零值,则结果为1,否则结果为NULL;假如两个操作数均为NULL,则所得结果为NULL.
SELECT ( 1 OR 0 ) , ( 0 OR 0 ) , ( 1 OR NULL ) , ( 0 OR NULL ) , ( 1 OR 1 ) , ( NULL OR NULL ) ;
XOR 表示逻辑异或,当任意一个操作数为NULL时,返回值为NULL;对于非NULL的操作数,如果两个的逻辑真假值相异,则返回结果为1,否则返回0,
SELECT ( 1 XOR 0 ) , ( 0 XOR 0 ) , ( 1 XOR NULL ) , ( 0 XOR NULL ) , ( 1 XOR 1 ) , ( NULL XOR NULL ) ;