目录
一、正则表达式
MySQL正则表达式通常是在检索数据库记录的时候,根据指定的匹配模式匹配记录中符合要求的特殊字符串。MySQL的正则表达式使用 regexp 这个关键字来指定正则表达式的匹配模式,regexp 操作符所支持的匹配模式。
查询以 ^A 开头的信息
select id,name from 表名 where name regexp '^A ';
查询以 B$ 结尾的信息
select id,name from 表名 where name regexp ' B$';
查询名字中包含 的信息
select id,name from 表名 where name regexp ' ';
查询名字是 C开头, D结尾,中间不知道是一个什么字符的信息
select id,name from 表名 where name regexp ' C.D';
查询名字中包含 E或者 F 的学生信息
select id,name from 表名 where name regexp ' E | F ';
查询名字中有 G, 可有可无的学生信息
必须要有的部分是' ’而' '可有可无
select id,name from 表名 where name regexp ' *' ;
查询名字中含有 H , 至少出现一次的学生信息
select id, name from 表名 where name regexp ' H +' ;
查询名字以 - 开头的学生信息
select id,name from 表名 where name regexp '^[ - ]';
查询名字不是 的学生信息
select id,name from 表名 where name regexp ' [^ ]';
查询学生名字不以 ... 开头的学生信息
select id,name from 表名 where name regexp '^[^ ]';
匹配 | 描述 |
^ | 匹配文本的开始字符 |
$ | 匹配文本的结束字符 |
. | 匹配任何单个字符 |
* | 匹配零个或多个在它前面的字符 |
% | 匹配所有 |
+ | 匹配前面的字符1次或多次 |
? | |
字符串 | 匹配包含指定的字符串 |
p1 | p2 | 匹配p1或p2 |
[ ... ] | 匹配字符集合中的任意一个字符 |
[ ^... ] | 匹配不在括号中的任何字符 |
[ n ] | 匹配前面的字符串n次 |
[ n,m ] | 匹配前面的字符串至少n次,至多m次 |
二、运算符
MySQL的运算符用于对记录中的字段值进行运算。MySQL的运算符共有四种,分别是:算术运算符、比较运算符、逻辑运算符和位运算符。
1、算术运算符
以 select 命令来实现最基础的加减乘除运算,MySQL支持使用的算术运算符。
运算符 | 描述 |
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取余 |
在除法运算和求余数运算中,除数不能为0,若除数是0,返回的结果则为NULL。需要注意的是,如果有多个运算符,按照先乘除后加减的优先级进行运算,相同优先级的运算符没有先后顺序。
select 1+2,2-1,3*4,4/2,582;
create table 表名 as select 1+2,2-1, 3*2, 4/2, 582;
select * from 表名;
2、比较运算符
比较运算符是查询数据记录时经常使用的一类运算符。通过使用比较运算符可以判断出
表中有哪些记录是符合条件的,如果比较的结果(以布尔值的方式进行返回判断)为真则返回1,如果为假则返回0,比较的结果如果不确定则返回NULL。其中字符串在进行比较的时候默认是不区分大小写的,如果要区分大小写可以通过binary关键字来实现。
运算符 | 描述 |
= | 等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
!=或< > | 不等于 |
is null | 判断一个值是否为null |
is not null | 判断一个值是否不为null |
between and | 两者之间 |
in | 在集合中 |
like | 通配符匹配 |
greatest | 两个或多个参数时返回最大值 |
least | 两个或多个参数时返回最小值 |
regexp | 正则表达式 |
等号 (=)是用来判断数字、字符串和表达式是否相等的,如果相等则返回1,如果不相等则返回0。如果比较的两者有一个值是NULL, 则比较的结果就是NULL。 其中字符的比较是根据ASCII 码来判断的,如果ASCII码相等,则表示两个字符相同:如果ASCII 码不相等,则表示两个字符不相同。
字符串(字母)比较:('a'>'b')其实比较的就是底层的ASCII码
需要关注的是ascii码有: a、A、0 (97、 65、48 )。
与linux返回值表达相反,linux中运行正常返回值是0,运行异常返回值是非0。
select 2=3; 不成立返回0
select 2<3; 成立返回1
① 如果两者都是整数,则按照整数值进行比较。
② 如果一个整数一个字符串,则会自动将字符串转换为数字,再进行比较。 (在程序中,一般是不会吧这两者进行相比较的)
③ 如果两者都是字符串,则按照字符串进行比较。
④ 如果两者中至少有一一个值是NULL, 则比较的结果是NULL。
select 'a'<'b'; 字符比较需要加 引号