运算符包括四类,分别是:算数运算符、比较运算符、逻辑运算符和位运算符

Mysql可以通过运算符来对表中数据进行运算,比如通过出生日期求年龄等

1、算术运算符
  加、减、乘除法和取模运算

  准备工作:创建表 tmp,定义数据类型int的字段a,插入数值64,对a值进行算术运算。

        > create table tmp(a int);

        > insert into tmp values(64);


    1.1 加减法

    > select a, a+10, a-3+5 from tmp;

 

    1.2 乘法、除法和求模

    > select a, a*2, a/2, a/3, a%3 from tmp;


    1.3 关于0的除法和求模

    > select a, a/0, a%0 from tmp;
 注意:除法也可以用 divmod


2、比较运算符

     2.2 数值比较

    > select a,a=24,a<12,a>40,a>=24,a<=24,a!=24,a<>24,a<=>24 from tmp;

 或者> select 2=3, 3>4, 5<7,6<=>6; (也可以是算式)

 

这里的1代表真,0代表假,需要说明的是<><=>

    <>代表不等于,等同于!=

    <=>代表等于,等同于=

 此外,等于和不等于不仅可以比较数值,还能比较字符串

   

     2.2 字符串比较

    > select 'a'='a', 'a'<>'b','good'!='god','god'!='GOD';


     2.3 is null 和 is not null

    > select a is null, a is not null from tmp;
 这里可以判断是否为空,NULL也可以跟NULL比较

 

    2.4 between andnot between and

    between and not between and可以判断数值是否在某一区间内

    > select a, a between 60 and 100 from tmp;    

 或者> select 3 between 50 and 60;


  2.5 in not in
  > select a, a in(64,68) from tmp;

 判断操作数是否在某一集合内


  2.6 like

    like可以用来匹配字符串,_代表单个字符,%代表多个字符

    > select 'stud'like 'stud', 'stud' like 'stu_','stud'like  '%d', 'stud' like 't___', 's'like null;

 

  2.7 regexp(正则表达式)

    Regexp运算符用来匹配字符串

image002.jpg

> select 'ssky' regexp '^s', 'ssky' regexp 'y$';

> select 'ssky' regexp '[ab]', 'ssky' regexp '[kc]';


3、 逻辑运算符

 3.1 与运算

 > select 2&&2,2&&null,2 and 3,2 and 2;

 这里&&和and意思一样,所有操作数不为0且不为NULL时,结果返回1.

 

 3.2 或运算

 > select 2||2,2||null,2 or 3,2 or 0;

 这里||和or的意思一样,所有操作数中存在任何一个操作数不为0,结果返回1.

 

 3.3 非运算

 > select !1,!2,!null;


4、位运算符

 4.1 位与

 mysql> select 2&3,bin(2&3);

 注:2的二进制是10, 3的二进制是11,bin将十进制转换为二进制。

 mysql> select 2&3&4; 

 

 4.2 位或 

 mysql> select 2|3; 

 

 4.3 位异或 

 mysql> select 2^3,bin(2^3); (相同的数异或后为0,不同的数异或后的结果为1)

 

 4.4 位取反 

 mysql> select ~4,~18446744073709551614,bin(~4); 

 

 4.5 位右移 

 mysql> select bin(100),100>>3, bin(100>>3);

 

 4.6 位左移 

 mysql> select bin(100),100<<3, bin(100<<3);