MySql like模糊查询使用详解

一、SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL中,SQL的模式缺省是忽略大小写的。下面显示一些例子。注意在你使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比较操作符。

SELECT 字段 FROM 表 WHERE 某字段 Like 条件

其中关于条件,SQL提供了四种匹配模式:

1,%:表示任意个或多个字符。可匹配任意类型和长度的字符。

比如 SELECT * FROM [user] WHERE u_name LIKE ‘%三%’

将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。

另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件

SELECT * FROM [user] WHERE u_name LIKE ‘%三%’ AND u_name LIKE ‘%猫%’

若使用 SELECT * FROM [user] WHERE u_name LIKE ‘%三%猫%’

虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。

2,_:表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:(可以代表一个中文字符)

比如 SELECT * FROM [user] WHERE u_name LIKE ‘三’

只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;

再比如 SELECT * FROM [user] WHERE u_name LIKE ‘三__’;

只找出“三脚猫”这样name为三个字且第一个字是“三”的;

二、正则模式

由MySQL提供的模式匹配的其他类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。

扩展正则表达式的一些字符是:

“.”匹配任何单个的字符。(单字节字符)

一个字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的一个范围,使用一个“-”。“[a-z]”匹配任何小写字母,而“[0-9]”匹配任何数字。

“ * ”匹配零个或多个在它前面的东西。例如,“x”匹配任何数量的“x”字符,“[0-9]”匹配的任何数量的数字,而“.*”匹配任何数量的任何东西。

正则表达式是区分大小写的,但是如果你希望,你能使用一个字符类匹配两种写法。例如,“[aA]”匹配小写或大写的“a”而“[a-zA-Z]”匹配两种写法的任何字母。

如果它出现在被测试值的任何地方,模式就匹配(只要他们匹配整个值,SQL模式匹配)。

为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。

为了说明扩展正则表达式如何工作,上面所示的LIKE查询在下面使用REGEXP重写:

为了找出以“三”开头的名字,使用“^”匹配名字的开始。

FROM [user] WHERE u_name REGEXP ‘^三’;

将会把u_name为 “三脚猫”等等以“三”开头的记录全找出来。

为了找出以“三”结尾的名字,使用“$”匹配名字的结尾。

FROM [user] WHERE u_name REGEXP ‘三$’;

将会把u_name为“张三”,“张猫三”等等以“三”结尾的记录全找出来。

你也可以使用“{n}”“重复n次”操作符重写先前的查询:

FROM [user] WHERE u_name REGEXP ‘b{2}$’;

注意:如果是中文字符,可能在使用时需要注意一下。

mysql %和正则_mysql 正则模式和like模糊查询相关推荐

  1. mysql 关键字模糊查询_MySQL单表多关键字模糊查询的实现方法

    在最近的一个项目需要实现在MySQL单表多关键字模糊查询,但这数个关键字并不一定都存在于某个字段.例如现有table表,其中有title,tag,description三个字段,分别记录一条资料的标题 ...

  2. mysql mybatis模糊查询语句_详解MyBatis模糊查询LIKE的三种方式

    模糊查询也是数据库SQL中使用频率很高的SQL语句,使用MyBatis来进行更加灵活的模糊查询. 直接传参法 直接传参法,就是将要查询的关键字keyword,在代码中拼接好要查询的格式,如%keywo ...

  3. mysql完成未完成_MYSQL SQL模式 (未完成)

    设置和查询SQL模式 通过修改sql_mode变量的值来改变SQL模式. SQL模式可以在全局级别下设置,也可以在会话级别下设置.在数据库启动时和数据库运行时都可以对sql_mode的值进行修改. 在 ...

  4. mysql最大值最小值_mysql最大值,最小值,总和查询与计数查询

    1.最大值查询: mysql> select max(score) from 4a; +------------+ | max(score) | +------------+ |         ...

  5. MySQL分库分页_MySQL分库分表的分页查询解决方案

    问题的提出 我们知道,当我们的数据量达到一定数量时,需要将数据表进行水平拆分,从而满足大量数据的存储和查询,保证系统的可用性,但同时会出现另外一个问题就是,如果业务要查询"最近注册的第3页用 ...

  6. mysql等值连接语句_MySql的回顾四:多表查询上(等值连接/非等值连接/自连接)-1992语法...

    时光在不经意间,总是过得出奇的快.小暑已过,进入中暑,太阳更加热烈的绽放着ta的光芒,...在外面被太阳照顾的人们啊,你们都是勤劳与可爱的人啊.在房子里已各种姿势看我这篇这章的你,既然点了进来,那就由 ...

  7. mysql 多对多_mysql多对一、多对多查询实践

    最近做的功能涉及这方面,算是练了一下. 首先多对一部分较简单.多的那一方表,多设置一个字段是少的那一方的id(主键). 具体查询时候关联查询即可. 可设置外键进行级联操作. 具体以后做到这个功能再更新 ...

  8. mysql 多字段单关键字_mysql多关键字多字段模糊查询

    假设有这样两条数据: (表名为user) 1) username=admin,password=000000 2) username=admin,password=123456 我们要实现的效果是可以 ...

  9. mysql查询多字段_mysql多关键字多字段模糊查询

    假设有这样两条数据: (表名为user) 1) username=admin,password=000000 2) username=admin,password=123456 我们要实现的效果是可以 ...

最新文章

  1. Python 调用matplotlib模块绘制柱状图
  2. 信息安全从业者必须接受的六个事实
  3. python3教程-Python3教程
  4. leetcode(78)子集
  5. 加载一张照片,可选择是否另存为
  6. php百度搜索框代码,基于jquery的仿百度搜索框效果代码_jquery
  7. 第一部linux手机,手机界再掀风波,英特尔力争在下一部手机中抢得一席之地
  8. uTools:一个方法“改变”uTools的插件安装/数据目录
  9. 数学建模7 多元线性回归分析
  10. hbase启动后HMaster进程自动关闭
  11. Linux下的Libsvm使用历程录
  12. STM32接收红外遥控数据
  13. 计算机毕设周记20篇,电子与计算机毕业设计周记.doc
  14. matplotlib堆积图
  15. 缴费报修小程序开发制作功能介绍
  16. 出现APK安装包解析错误问题说明
  17. AIX上解压缩.tar.Z, .tar.gz, .zip及.tgz
  18. (unix网络编程)即时通讯工具二:服务端与客户端融合
  19. Linux虚机 下给用户调整安装JDK版本
  20. 致那些自嘲码农的苦逼程序员

热门文章

  1. Linux实验三父子进程每隔3秒,实验三进程的创建和简单控制(学生分析.doc
  2. 麒麟810处理器_华为nova5跑分公布,麒麟810到底是什么水平?
  3. SQL中left join、right join、inner join的区别
  4. 阮一峰es6电子书_ES6理解进阶【大前端高薪训练营】
  5. Linux(Ubuntu)版本Idea软件字体模糊解决办法
  6. 移动硬盘上划分linux分区,Linux下磁盘分区和移动硬盘的挂载方法有哪些?
  7. python中向量长度_python中向量指的是什么意思
  8. usg6620 查看端口流量_WhatRoute for Mac(互联网流量诊断查询工具)
  9. 程序员的数学全三册密码_阿波罗50年前成功登月,少不了这位硬核女程序员
  10. java extensions JAR files