MySQL的运算符

1、算术运算

运算符

作用

+

加法

-

减法

*

乘法

/ (div)

除法 (整除

% (mod)

求余

 

运算代码

结果

运算代码

结果

select -4/-3;

//1.3333

select -4 div -3;

//1

select -4/3;

//-1.3333

select -4 div 3;

//-1

select 4/0;

//null

select 4 div -3;

//-1

select 0/4;

//0

select -4 mod -3;

//-1

select -4%-3;

//-1

select 4 mod -3;

//1

select -4 % -3;

//-1

select -4 mod 3;

//-1

 

2、比较运算符Oracle中的’==’为判断,在MySQL中是’=’

运算符

运算符含义

=,<=>

等于,安全等于

!=,<>

不等于,安全不等于

<,>

小于,大于

<=,>=

小于等于,大于等于

Is null

判断一个值是否为 null

Is not null

判断一个值是否不为 null

Between…and

判断一个值是否落在两个值之间

In

判断一个值是否落在两个值之内

Not in

判断一个值不是 IN 列表中的任意一个值

Like

通配符匹配

Regexp

正则表达式匹配

说明:如果条件成立返回1,否则返回0

范例1:Select 1=1 as 数字比较, 1='1' as 数字转换比较,  'abc'='ab' as 字符比较,

1+2=4-1 as 表达式比较, 1>2 as 比较表达式, 2>1 as 比较表达式;

安全比较<=>

范例2:Select 1=1 as '=数字比较', 1<=>1 as '<=>数字比较', 'abc'<=>'ab' as '<=>字符比较',

'abc'<=>'abc' as '<=>字符比较', 1<=>null as '<=>null和1比较', null<=>null as '<=>null比较',

1=null as '=null和1比较', null=null as '=null比较';

范例3:select 24 between 15 and 30;

范例4:

mysql> Select 2>2 as '比较1',

    -> 1 is null as '比较2',

    -> 1 is not null as '比较3',

    -> null is null as '比较4',

    -> 10 in (10,20) as '比较5',

    -> 10 in (1,20) as '比较6',

    -> 'abc' like '__a' as '比较7',

    -> 'abc' like '__c' as '比较8',

    -> 'ab%' like 'abc' as '比较9',

    -> 'abc' like '%a%' as '比较10';

 

3、逻辑运算符

运算符

作用

范例

AND(&&)

3&&0=0,3&&3=1,null&&null=nulll

OR(||)

 

NOT(!)

!1=0,!0=1,!'ac'=1,!null=null

XOR

异或

 

 

操作数1

操作数2

And(&&)

Or(||)

Xor异或

0

0

0

0

0

0

非0的数

0

1

1

非0的数

非0的数

1

1

0

Null

Null

Null

NULL

NULL

Null

非0的数

Null

1

NULL

Null

0

0

0

NULL

重点关注:与0、null的关系

 

4、位运算符(了解)

运算符

运算符含义

&

按位与

|

按位或

~

按位取反,0→1,1→0

^

按位异或

m<<n

按位左移,m这个数整体向左位移n位

m>>n

按位右移,m这个数整体向右位移n位

 

操作数1

操作数2

&

|

^异或

0

0

0

0

0

0

非0的数

0

1

1

非0的数

非0的数

1

1

0

Null

Null

Null

Null

Null

Null

非0的数

Null

Null

Null

Null

0

Null

Null

Null

Bin()十进制转二进制的函数

范例1:mysql> select bin(2),bin(4),bin(2|4),4|2;

 范例2:mysql> select bin(8),bin(8<<2),bin(8>>2);

 

5、MySQL正则表达式

语法格式:REGEXP 匹配模式

1)   匹配多个实例

元字符

说明

*

0个或多个匹配

+

1个或多个匹配

0个或1个匹配

{n}

指定数目n次的匹配。

例如:'o{2}' 不能匹配 "Bob"  中的'o',但是能匹配 "food" 中的两个o

{n,}

不少于指定数目的匹配;

{n,m}

M、n均为非负整数,n<=m。最少匹配n次,且最多匹配m次。

p1|p2|p3

匹配 p1  或 p2  或 p3。例如:

'z|food'  能匹配 "z"  或 "food"。 '(z|f)ood' 则匹配"zood"或 "food"

例1:检查Email的正确性,如果错误,则显示该用户的名字。

  []里面的字符串,代表或者,要么他要么他,不是必须全部出现

  Email:xxxx@yyyy

  用户名xxxx:字母、数字、_、-       服务器yyyy:如163.com\qq.com

  用户名xxxx:[a-zA-Z0-9-_]+   “字母数字-_”中的类型出现1个或多个

  服务器yyyy:[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+$

  Email:REGEXP ‘^[a-zA-Z0-9-_]+@[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+$’

  SELECT ename FROM student WHERE email REGEXP '^[a-zA-Z0-9-_]+@[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+$';

2)   ^查询以特定字符或字符串开头的数据

例:查询员工姓名以S开头的姓名

SELECT ename FROM emp WHERE ename LIKE 'S%';

SELECT ename FROM emp WHERE ename REGEXP '^S';

3)   $查询以特定字符或字符串结尾的数据

例:查询员工姓名以S结尾的姓名

SELECT ename FROM emp WHERE ename LIKE '%S';

SELECT ename FROM emp WHERE ename REGEXP 'S$';

4)   符号‘.’匹配任意一个字符

符号“.”代替字符串中的任意一个字符(包括回车和换行,但不包括/n)

例1:查询员工姓名包含A且A前有一个字符的员工姓名

SELECT ename FROM emp WHERE ename REGEXP '.A';

例2:查询员工姓名包含A且A后有一个字符的员工姓名

SELECT ename FROM emp WHERE ename REGEXP 'A.';

例2:查询员工姓名中以A开始的员工姓名

SELECT ename FROM emp WHERE ename LIKE 'A%';

SELECT ename FROM emp WHERE ename REGEXP '^A(.)*';

例3:查询user 表中b与t之间有单个字符的数据

Select * from user where name regexp 'b.t';

5)   a+ 匹配1个或多个a字符的任何序列

例:查询员工姓名包含A的员工姓名

SELECT ename FROM emp WHERE ename LIKE '%A%';

SELECT ename FROM emp WHERE ename REGEXP 'A+';

6)   符号‘X’包含字符X

在指定多个字符串时,需要使用‘|’将这些字符串分隔,且字符串与‘|’之间不能有空格,否则表达式会认为还应包含有空格。

例1:查询员工姓名包含A的员工姓名

SELECT ename FROM emp WHERE ename REGEXP 'A';

SELECT ename FROM emp WHERE ename LIKE '%A%';

例2:查询员工姓名包含A或S的员工姓名

SELECT ename FROM emp WHERE ename REGEXP 'A|S';

SELECT ename FROM emp WHERE ename LIKE '%A%' OR ename LIKE '%S%';

7)   [ ]或| 匹配指定字符串查询

在正则表达式中,‘[]’是另一种形式的‘|’,作用是匹配指定的一个字符。

匹配含有123456789中任意一个数字,“-”表示某一个范围:

1|2|3|4|5|6|7|8|9 → [123456789] → [1-9]

例:查询员工姓名包含A或S或M的员工姓名

SELECT ename FROM emp WHERE ename REGEXP '[A,S,M]';

SELECT ename FROM emp WHERE ename REGEXP '[ASM]';

SELECT ename FROM emp WHERE ename REGEXP 'A|S|M';

SELECT ename FROM emp WHERE ename LIKE '%A%' OR ename LIKE '%S%' OR ename LIKE '%M%';

8)   匹配特殊字符

如果正则表达式中 包含一些特定含义的特殊字符:如“-、\”等等。如需匹配这些字符,就需要用“\\”为前导,例如“\\-”,“\\.”

 

作者:kerwin-chyl

文章链接:https:////www.cnblogs.com/kerwin-chyl

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利

posted @ 2020-03-07 16:14  Kerwin_chyl  阅读(245)  评论(0编辑  收藏  举报