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<
按位左移,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)匹配特殊字符
如果正则表达式中 包含一些特定含义的特殊字符:如“-、\”等等。如需匹配这些字符,就需要用“\\”为前导,例如“\\-”,“\\.”
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利