mysql模糊匹配查询like,regexp,in

 

摘要

内容比较简单,无摘要。
 

关键词

模糊查询  like  regexp  in  contact

 

正文

下图是示例用到的数据表信息

MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式

 

一、SQL模式

SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL中,SQL的模式缺省是忽略大小写的。
注意在你使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比较操作符。
语法:SELECT 字段 FROM 表 WHERE 某字段 Like 条件
其中关于条件,SQL提供了两种种匹配模式:
  1. 百分号(%):示任意个或多个字符,可匹配任意类型和长度的字符。
  示例1:SELECT * FROM character WHERE name LIKE ‘%孙%';即匹配e姓名为“孙行者”,“行者孙,“行者孙”三行数据
  示例2:SELECT * FROM character WHERE name LIke '%孙%' and name like '%行%'; 即匹配姓名为“孙行者”,“行者孙,“行者孙”三行数据
  示例3:SELECT * FROM character WHERE name LIke '%孙%行%‘;只能匹配姓名为“孙行者”一行数据
  注意示例2和示例3的区别
  2.下划线(_):表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:(可以代表一个中文字符)
  示例1:SELECT * FROM character WHERE name LIKE ‘_三_';即把姓名为“唐三藏”的一行数据
  示例2:SELECT * FROM character WHERE name LIKE ‘_三';即把姓名为“唐三”一行数据
 

二、正则模式

由MySQL提供的模式匹配的其他类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词),以下是正则表达式中常用的字符
  1. “.”匹配任何单个的字符(单字节字符)。一个字符类“[...]”匹配在方括号内的任何字符。
  示例1::“[abc]”匹配“a”、“b”或“c”。为了命名字符的一个范围,使用一个“-”。“[a-z]”匹配任何小写字母,而“[0-9]”匹配任何数字。
  2. “ * ”匹配零个或多个在它前面的东西。
  示例:“x*”匹配任何数量的“x”字符,“[0-9]*”匹配的任何数量的数字,而“.*”匹配任何数量的任何东西。
  3. 注意:正则表达式是区分大小写的,但是如果你希望,你能使用一个字符类匹配两种写法。例如,“[aA]”匹配小写或大写的“a”而“[a-zA-Z]”匹配两种写法的任何字母。
  4. “^”匹配名字的开始
  示例:姓名以“孙”开始的 SELECT * FROM role WHERE name REGEXP "^孙";;即匹配姓名为“孙行者”,“孙悟空两行数据
  5. 使用“$”匹配名字的结尾
  示例:示例:姓名以“孙”结尾的 SELECT * FROM role WHERE name REGEXP "孙$";;即匹配姓名为“者行孙”,“行者孙”两行数据
 

三、in查询

叫in查询不是很合理 ,更合理的说法是 :in其实和=类似,区别在于:=后面是一个值。in 后面可以是多个值。
  示例1:select * from role where name in("唐三");即匹配姓名为“唐三”一行数据;
  示例2:select * from role where name in("唐三","唐三藏");即匹配姓名为“唐三”,“唐三藏”一行数据;
  示例3:select * from role where name in("唐三","%行者%"),只匹配姓名为“唐三”一行数据;即in查询不支持模糊查询,如示例4
  示例4:select * from role where name in("%行者%"),无匹配结果
 

四、like contact模糊查询

CONCAT(str1,str2,…) 函数返回结果为连接参数产生的字符串。
  示例1:select * from role where name like contact("%","三","%");即匹配姓名为“唐三”,“唐三藏”两行行数据;
like contact模糊查询强大的地方在于可以对传进来的参数进行某查询,比如经前端提交上的数据,赋值给参数name,则可以select * from table where name like contact("%",${name},"%")

mysql学习2:模糊匹配查询like,regexp,in的更多相关文章

  1. Oracle和Mysql中mybatis模糊匹配查询区别

    1.Oracle AND NAME LIKE '%'||#{name}||'%' 2.Mysql AND NAME LIKE "%"#{name}"%"

  2. mysql高级排序&高级匹配查询示例

    在大多数应用场景下,我们使用mysql进行查询时只会用到'=', '>' , '<' , in, like 等常用的方法,看起来,大多数情况下,已经足以应付我们的小型应用了.不过,在一些特 ...

  3. 转MYSQL学习(四) 查询

    MySQL中select的基本语法形式: select 属性列表 from 表名和视图列表 [where 条件表达式] [group by 属性名[having 条件表达式]] [order by 属 ...

  4. mysql学习 | LeetCode数据库简单查询练习

    力扣:https://leetcode-cn.com/ 力扣网数据库练习:https://leetcode-cn.com/problemset/database/ 文章目录 175. 组合两个表 题解 ...

  5. MySQL模糊匹配查询like、regexp、in

    MySQL提供标准的SQL模式匹配,以及一种基于像Unix实用程序,如:vi.grep和sed的扩展正则表达式模式匹配的格式 一.SQL模式(% ,_) SQL的模式匹配允许你使用“_”匹配任何单个字 ...

  6. mysql学习笔记-- 多表查询之外键、表连接、子查询、索引

    本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...

  7. MySQL学习10 - 多表查询

    一.多表连接查询 1.交叉连接 2.内连接 3.外连接之左连接 4.外连接之右连接 5.全外连接 二.符合条件连接查询 三.子查询 1.带in关键字的子查询 2.带比较运算符的子查询 3.带EXIST ...

  8. MySQL学习9 - 单表查询

    一.单表查询的语法 二.关键字的执行优先级(重点) 三.单表查询示例 1.where约束 2.group by分组查询 3.聚合函数 4.HAVING过滤 5.order by查询排序 6.limit ...

  9. MySQL学习04(DQL查询)

    DQL查询 DQL语言 DQL( Data Query Language 数据查询语言 ) 查询数据库数据 , 如SELECT语句 简单的单表查询或多表的复杂查询和嵌套查询 是数据库语言中最核心,最重 ...

随机推荐

  1. day01-MySQL介绍

    一.MySQL的介绍 1.1.MySQL介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司.MySQL 最流行的关系型数据库管理系统,在 W ...

  2. iOS 申请distribution证书, 公钥,私钥

    私钥只有在本机生成CSR文件的时候会产生,公钥会在CSR文件传给apple时,apple产生.

  3. C语言复习:结构体

    结构体专题 01.结构体类型定义及结构体变量定义     char c1,char c2, char name[62]; int age     char name[62]; int age,char ...

  4. linux 使用spinlock的配对关系问题

    大家使用spinlock的时候,一般是这么配对: spin_lock---------------------spin_unlock------------------最轻 spin_lock_bh- ...

  5. Java8 parallelStream与迭代器Iterator性能

    定义一个测试类 public class TestParallelStream { private List<Integer> list; private int size; privat ...

  6. ubuntu16.04 64bit 升级到 python3.6

    https://blog.csdn.net/zhao__zhen/article/details/81584933 https://www.codetd.com/article/1967538 htt ...

  7. JAVA 实验报告

        石家庄铁道大学信息科学与技术学院       实验报告 2018年----2019年  第一学期               题目:   四则运算.生成验证码 课程名称:  JAVA语言程序设 ...

  8. surf特征点检测

    ※注:参数SURF中的hessian阈值是图像Hessian矩阵判别式的阈值,值越大检测出的特征点就越少,也就意味着特征点越稳定 #include "opencv2/core/core.hp ...

  9. CentOS 6.3开机启动服务及自动联网

    虚拟机设置选择NAT模式,默认情况下,CentOS不是自动连接上网的,要点击右上角有个电脑图标,选择system eth0进行连接, 可以修改开机启动配置只需修改:/etc/sysconfig/net ...

  10. FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK

    [FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK] 1.FLAG_ACTIVITY_NEW_TASK 2.FLAG_ACTIVITY_CLEAR_T ...