mysql运算符
用来连接表达式中各个操作的符号,其作用是用来指明对操作数所进行的运算。mysql数据库支持使用运算符。通过运算符,可以使数据的功能更强大。而且,可以更加灵活的使用表中的数据。mysql运算符包括四类:
一、算数运算符
包括加、减、乘、除、求余这几种算数运算符,这类运算符主要是在数值上,其中,求余运算符也称为模运算。
加法运算 + x1+x2+...+xn
减法运算 - x1-x2-....-xn
乘法运算 * x1*x2*...*xn
除法运算,返回x1除以x2的商 / x1/x2
除法运算,返回商 DIV x1 DIV X2
求余运算,返回x1除以x2的余数 x1%x2
求余运算,返回余数 MOD(x1,x2)
e.g 下面将t1表中字段a的值进行加法、减法、和乘法运算。
SELECT a,a+5+2,a-5-2,a*5*2 FROM t1;
下面将t1表中字段a的值进行除法和求余运算。
SELECT a,a/3,a DIV 3,a%3,MOD(a,3) FROM t1;
下面将除法和求余运算的操作数x2设置为0
SELECT 5/0,5 DIV 0,5%0,MOD(5,0);
二、比较运算符
包括大于、小于、等于、不等于、为空等比较运算,主要用于数值的比较,字符串的匹配等方面,尤其值得注意的是,之前介绍过LIKE、IN、BETWEEN AND、IS NULL等都是比较运算符,还有用于使用正则表达式的REGEXP也是比较运算符。
=、<> !=、<=>、>、>=、<、<=、IS NULL、BETWEEN AND、IN 判断某个数是否落在某个集合中、LIKE 是否匹配字符串、REGEXP是否与正则表达式匹配
1、运算符=
可以用来判断数字、字符串、表达式等是否相等。如果相等,结果返回1,不相等,结果返回0.空值(NULL)不能使用=来判断。<=>可以判断空值。
SELECT a,a=24,a=20 FROM t1;
SELECT 'b'='b','b'='c',NULL=NULL;
SELECT 'b'<=>'b','b'<=>'c',NULL<=>NULL;
2、运算符>
可以用来判断左边的操作数是否大于右边的。如果大于,结果返回1,不不大于,结果返回0.空值(NULL)不能使用>来判断。
SELECT a,a>24,a>20 FROM t1;
SELECT 'b'>'c','bc'>'bb',NULL>NULL;
SELECT 'b'<=>'b','b'<=>'c',NULL<=>NULL;
3、运算符REGEXP
用来匹配字符串,但其是使用正则表达式进行匹配。表达式“x1 REGEXP 正则表达式中",如果x1满足正则表达式,结果将返回1,如果不满足,结果将返回0
SELECT s,s REGEXP '^b',s REGEXP 'g$',s REGEXP 'y' FROM t2;
三、逻辑运算符
包括与&&/AND、或||/OR、非!/NOT、异或XOR等逻辑运算,这种运算的结果只返回真值(1或者TRUE)和假值(0或者FALSE)如果操作数中不包含非0的数字,但包含NULL时,结果返回NULL,如果操作数中只有0时,结果返回0。
四、位运算符
包括按位与&、按位或|、按位取反~、按位异或^、按位左移<<和按位右移>>等位运算。这些运算都必须先数值变为二进制,然后再二进制数上进行操作的。
e.g &表示按位与,进行该运算时,数据库系统会先将十进制的数转换为二进制的数然后对应操作数的每个二进制位上进行与运算。1和1相与得1,与0相与得0.运算完成后再将二进制数转变成十进制数。
SELECT 5&6,5&6&7;
按位左移与按位右移
“<<”表示按位左移。“m<<n”表示m的二进制数向左移n位。右边补上n个0.例如,二进制数001左移1位后将变成0010.“>>”表示按位右移。”m>>n“表示m的二进制数向右移n位,左边补上n个0,二进制数011右移一位后变成001,最后一个1被移出去了,直接不要了。
五、运算符的优先级
从左到右开始运算,哪个运算符的优先级高,哪个先算。
优先级 运算符
1 !
2 ~
3 乘除
4 加减
5 >>,<<
6 &
7 |
8 比较大小
9 BETWEEN AND,CASE,WHEN,THEN,ELSE
10 NOT
11 &&,AND
12 ||,OR.XOR
13 =