数据库MySQL数据查询—模糊查询(like和relike(或regexp))

  1. like和relike(或regexp)的格式:

Like的格式是A(表名) like B(表达式),表示能否用B去完全匹配A的内容,简单来讲like是从头逐一字符匹配的,是全部匹配,返回的结果是True/False。

A(表名) relike B (表达式) ,表示A里边只要含有B即可,B中一般放正则表达式。regexp与其用法相似,即A(表名) regexp B (表达式)。

  1. 几种简单的匹配符号:
    (1)"_“表示任意单个字符
    (2)"%“表示任意数量的字符
    (3)如果想在A中匹配字符”_“和”%“或者“;”就需要转义。以“%”为例,即用”\%"(匹配一个%字符)。

大家可以通过以下例子对模糊查询做更进一步的了解:

例一、mySchool数据库中有如下表:

1.student表:学生(学号,密码,姓名,性别,年级编号,电话,地址,出生日期,邮件账号,身份证号);

mysql left 模糊匹配 mysql模糊匹配表名_mysql left 模糊匹配

2.subject表:课程表(课程编号,课程名称,学时,年级编号);

mysql left 模糊匹配 mysql模糊匹配表名_MySQL模糊查询_02

  1. 查询河北省的学生的学生姓名、地址、手机号码,列名用汉字显示。
    补充一点:这里给属性列起别名一共有三种方式(本人习惯用第一种形式):
    (1)select C(原来属性名) as 别名
    (2)select C(原来属性名) = 别名
    (3)select C(原来属性名) 别名
SELECT studentName as 姓名,address as 住址,phone as 手机号
from student
where address like'河北%';
  1. 查询姓李的男生信息。
SELECT *
from student
where studentName like'李%' and sex='男';
  1. 查询名字中包含“萍”字的女生信息。
SELECT *
from student
where studentName like'%萍%' and sex='女';
  1. 查询名字中第二个字为“秋”的学生信息。
SELECT *
from student
where studentName like'_秋%';
  1. 查询课程名第一个字符为“j”,第二字字符为“a”或“s”的课程信息。
SELECT *
from subject
where subjectName regexp '^j[as]';
  1. 查询课程名中包含“_”(下划线)的课程信息。
SELECT *
from subject
where subjectName like '%\_%';

例二、mySchool数据库中有如下表:

1.book表:图书(图书编号,书名,作者姓名,出版社,出版日期,现存数量,单价)

mysql left 模糊匹配 mysql模糊匹配表名_数据库_03


2.reader表:读者(读者编号,读者姓名,已借数量,联系地址)

mysql left 模糊匹配 mysql模糊匹配表名_数据库_04


3.pentlay表 罚款记录表(读者编号,图书编号,罚款日期,罚款类型,罚款金额)

mysql left 模糊匹配 mysql模糊匹配表名_表名_05

  1. 查询图书名以“欣赏”结尾的图书信息。
SELECT *
from book
where bname regexp '欣赏$';
  1. 查询图书名中包含“数据库”的图书编号、图书名、出版社、单价,列名以汉字显示。
SELECT bid as 图书编号,bname as 图书名,pubcomp as 出版社,price as 单价
from book
where bname regexp '数据库';
  1. 检索读者名中第三个字为“伟”的读者信息。
SELECT *
from reader
where rname like '__伟';
  1. 查询姓张的和姓王的读者信息。
SELECT *
from reader
where mname regexp'^[张王]';
  1. 查询罚款金额大于5元的罚款记录,输出读者编号、图书编号、罚款日期、罚款类型、罚款金额和一列“已处理”,最后一列的列名为“处理情况”,其他列的列名使用汉字。
SELECT rid as 读者编号,bid as 图书编号,pdate as 罚款日期,ptype as 罚款类型,amount as 罚款金额 ,'已处理' as 处理情况
from penalty
where amount>5 ;