Mysql模糊查询语法
2016-06-02 13:47
447 查看
一.Mysql模糊查询语法支持2种匹配格式
1.SQL匹配模式(开发中应用最多的一种)
2.正则表达式匹配模式(不推荐使用)
1.SQL匹配模式(开发中应用最多的一种)
1)使用SQL匹配模式,不能使用操作符=或!=
而是使用like或not like
2)使用SQL匹配模式,Mysql提供了2中通配符
%表示任意数量的任意字符(其中包括0个)
_表示任意单个字符
3)使用SQL匹配模式,如果匹配格式中不包含
以上2中通配符中的任意一个,其查询效果等同于=或!=
4)使用SQL匹配模式,默认情况下不区分大小写
实例:
1)查询用户名以某个字符开头的用户(在这里username字段是varchar类型)
查询以字符'l'开头的用户
like 'l%'
select * from users(表名) where username like 'l%';
2)查询用户名以某个字符结尾的用户
%e
查询用户名以字符'e'结尾的用户
select * from users(表名) where username like '%e';
3)查询包含某个字符的用户
查询包含字符'o'的用户
%o%
select * from users where usernmae like '%o';
4)查询用户名长度为3的用户名
___(3个下划线代表3个字符)
select * from users where usernmae like '___';
5)查询用户名第二个字符为'o'的用户
'_o%'
select * from users(表名) where username like '_o%';
2.正则表达式匹配模式(不推荐使用)
通配符:
.匹配任意单个字符
*匹配0个或多个在它前面的字符
x(*)表示匹配任何数量的x字符
[..]匹配中括号的任意字符
[abc]匹配字符a b 或 c
[a-z]匹配任何字母
[0-9]匹配任何数字
[0-9]*匹配任何数量的任何数字
[a-z]*匹配任何数量的字母
^表示以某个字符或字符串开始
^a表示以字母a开头
$表示以某个字符或字符串结尾
$a表示以字母a结尾
使用正则表达式使用的操作模式是REGEXP或NOT REGEXP(RLIKE或NOT RLIKE)
如果使用一个正则表达式来匹配,其模式有别于SQL模式
正则表达式匹配模式,其正则表达式出现在匹配字段的任何位置,其模式就算匹配了,
不必再两侧放一个通配符来使得其匹配。
实例说明一下:如果使用一个正则表达式来匹配,其模式有别于SQL模式
1)查询用户名为字符'l'开头的用户
SQL匹配模式 l%
正则表达式 ^l
select * from users where username REGEXP '^l';
2)查询用户名长度为3的用户名
SQL匹配模式 ___(3个下划线代表3个字符)
正则表达式 ...(3个点)
select * from users where REGEXP '...';把所有用户名大于等于3的用户都查询出来了
注意:如果仅用通配符.来匹配。有几点通配符,假设n个,那么其匹配模式表示,大于等于n个字符
表示精确字符数的方法:^...$
select * from users where REGEXP '^...$' 即表示三个字符
1.SQL匹配模式(开发中应用最多的一种)
2.正则表达式匹配模式(不推荐使用)
1.SQL匹配模式(开发中应用最多的一种)
1)使用SQL匹配模式,不能使用操作符=或!=
而是使用like或not like
2)使用SQL匹配模式,Mysql提供了2中通配符
%表示任意数量的任意字符(其中包括0个)
_表示任意单个字符
3)使用SQL匹配模式,如果匹配格式中不包含
以上2中通配符中的任意一个,其查询效果等同于=或!=
4)使用SQL匹配模式,默认情况下不区分大小写
实例:
1)查询用户名以某个字符开头的用户(在这里username字段是varchar类型)
查询以字符'l'开头的用户
like 'l%'
select * from users(表名) where username like 'l%';
2)查询用户名以某个字符结尾的用户
%e
查询用户名以字符'e'结尾的用户
select * from users(表名) where username like '%e';
3)查询包含某个字符的用户
查询包含字符'o'的用户
%o%
select * from users where usernmae like '%o';
4)查询用户名长度为3的用户名
___(3个下划线代表3个字符)
select * from users where usernmae like '___';
5)查询用户名第二个字符为'o'的用户
'_o%'
select * from users(表名) where username like '_o%';
2.正则表达式匹配模式(不推荐使用)
通配符:
.匹配任意单个字符
*匹配0个或多个在它前面的字符
x(*)表示匹配任何数量的x字符
[..]匹配中括号的任意字符
[abc]匹配字符a b 或 c
[a-z]匹配任何字母
[0-9]匹配任何数字
[0-9]*匹配任何数量的任何数字
[a-z]*匹配任何数量的字母
^表示以某个字符或字符串开始
^a表示以字母a开头
$表示以某个字符或字符串结尾
$a表示以字母a结尾
使用正则表达式使用的操作模式是REGEXP或NOT REGEXP(RLIKE或NOT RLIKE)
如果使用一个正则表达式来匹配,其模式有别于SQL模式
正则表达式匹配模式,其正则表达式出现在匹配字段的任何位置,其模式就算匹配了,
不必再两侧放一个通配符来使得其匹配。
实例说明一下:如果使用一个正则表达式来匹配,其模式有别于SQL模式
1)查询用户名为字符'l'开头的用户
SQL匹配模式 l%
正则表达式 ^l
select * from users where username REGEXP '^l';
2)查询用户名长度为3的用户名
SQL匹配模式 ___(3个下划线代表3个字符)
正则表达式 ...(3个点)
select * from users where REGEXP '...';把所有用户名大于等于3的用户都查询出来了
注意:如果仅用通配符.来匹配。有几点通配符,假设n个,那么其匹配模式表示,大于等于n个字符
表示精确字符数的方法:^...$
select * from users where REGEXP '^...$' 即表示三个字符
相关文章推荐
- mysql 安全
- MySQL学习笔记之九:MySQL Replication
- MySQL 选择数据库
- Navicat for MySQL&nbsp…
- 【MySQL】[Err] [Imp] 2…
- mysql latin1 utf8 转换
- 求某字段的总和mysql语句
- 从mysql导出到excel 格式为.xls
- 从mysql导出到excel 格式为.csv
- mysqll 字符集合分析
- mysql 初始密码问题 —— windows
- MySQL松散索引扫描与紧凑索引扫描
- MySql新建用户的一种方法
- MySQL服务无法启动,服务没有报告任何错误的解决办法
- cmd连接MySQL
- Navicat for MySQL 有哪些常用功能
- MySQL 5.1安装和配置过程中遇到的问题
- 常用的MySQL语句写法 --非原创(原创作者:菠萝大象)
- 常用的MySQL复杂查询语句写法 --非原创(原创作者:菠萝大象)
- Mysql参数优化