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