数据库MySQL数据查询—模糊查询(like和relike(或regexp))
like和relike(或regexp)的格式:Like的格式是A(表名) like B(表达式),表示能否用B去完全匹配A的内容,简单来讲like是从头逐一字符匹配的,是全部匹配,返回的结果是True/False。
A(表名) relike B (表达式) ,表示A里边只要含有B即可,B中一般放正则表达式。regexp与其用法相似,即A(表名) regexp B (表达式)。
几种简单的匹配符号:
(1)"_“表示任意单个字符
(2)"%“表示任意数量的字符
(3)如果想在A中匹配字符”_“和”%“或者“;”就需要转义。以“%”为例,即用”\%"(匹配一个%字符)。
大家可以通过以下例子对模糊查询做更进一步的了解:
例一、mySchool数据库中有如下表:
1.student表:学生(学号,密码,姓名,性别,年级编号,电话,地址,出生日期,邮件账号,身份证号);2.subject表:课程表(课程编号,课程名称,学时,年级编号);
查询河北省的学生的学生姓名、地址、手机号码,列名用汉字显示。
补充一点:这里给属性列起别名一共有三种方式(本人习惯用第一种形式):
(1)select C(原来属性名) as 别名
(2)select C(原来属性名) = 别名
(3)select C(原来属性名) 别名
SELECT studentName as 姓名,address as 住址,phone as 手机号from studentwhere address like'河北%';
查询姓李的男生信息。
SELECT *from studentwhere studentName like'李%' and sex='男';
查询名字中包含“萍”字的女生信息。
SELECT *from studentwhere studentName like'%萍%' and sex='女';
查询名字中第二个字为“秋”的学生信息。
SELECT *from studentwhere studentName like'_秋%';
查询课程名第一个字符为“j”,第二字字符为“a”或“s”的课程信息。
SELECT *from subjectwhere subjectName regexp '^j[as]';
查询课程名中包含“_”(下划线)的课程信息。
SELECT *from subjectwhere subjectName like '%\_%';
例二、mySchool数据库中有如下表:
1.book表:图书(图书编号,书名,作者姓名,出版社,出版日期,现存数量,单价)
2.reader表:读者(读者编号,读者姓名,已借数量,联系地址)
3.pentlay表 罚款记录表(读者编号,图书编号,罚款日期,罚款类型,罚款金额)
查询图书名以“欣赏”结尾的图书信息。
SELECT *from bookwhere bname regexp '欣赏$';
查询图书名中包含“数据库”的图书编号、图书名、出版社、单价,列名以汉字显示。
SELECT bid as 图书编号,bname as 图书名,pubcomp as 出版社,price as 单价from bookwhere bname regexp '数据库';
检索读者名中第三个字为“伟”的读者信息。
SELECT *from readerwhere rname like '__伟';
查询姓张的和姓王的读者信息。
SELECT *from readerwhere mname regexp'^[张王]';
查询罚款金额大于5元的罚款记录,输出读者编号、图书编号、罚款日期、罚款类型、罚款金额和一列“已处理”,最后一列的列名为“处理情况”,其他列的列名使用汉字。
SELECT rid as 读者编号,bid as 图书编号,pdate as 罚款日期,ptype as 罚款类型,amount as 罚款金额 ,'已处理' as 处理情况from penaltywhere amount>5 ;
如果觉得《数据库MySQL数据查询---模糊查询(like和relike(或regexp))》对你有帮助,请点赞、收藏,并留下你的观点哦!