Mysql模糊查询语法

来源:互联网 发布:新闻联播关于网络诈骗 编辑:程序博客网 时间:2024/04/28 15:48
一.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 '^...$' 即表示三个字符
  




0 0