首页 数据库 mysql教程 MySql官方手册学习笔记2 MySql的模糊查询和正则表达式_MySQL

MySql官方手册学习笔记2 MySql的模糊查询和正则表达式_MySQL

Jun 01, 2016 pm 01:23 PM
表达式

正则表达式

bitsCN.com

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

要想找出以“b”开头的名字:

 

mysql> <strong>SELECT * FROM pet WHERE name LIKE 'b%';</strong>
登录后复制
+--------+--------+---------+------+------------+------------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| name   | owner  | species | sex  | birth      | death      |
登录后复制
登录后复制
+--------+--------+---------+------+------------+------------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL       |
登录后复制
登录后复制
| Bowser | Diane  | dog     | m    | 1989-08-31 | 1995-07-29 |
登录后复制
登录后复制
+--------+--------+---------+------+------------+------------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
 
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

要想找出以“fy”结尾的名字:

 

mysql> <strong>SELECT * FROM pet WHERE name LIKE '%fy';</strong>
登录后复制
+--------+--------+---------+------+------------+-------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| name   | owner  | species | sex  | birth      | death |
登录后复制
登录后复制
+--------+--------+---------+------+------------+-------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| Fluffy | Harold | cat     | f    | 1993-02-04 | NULL  |
登录后复制
登录后复制
| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL  |
登录后复制
登录后复制
+--------+--------+---------+------+------------+-------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
 
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

要想找出包含“w”的名字:

 

mysql> <strong>SELECT * FROM pet WHERE name LIKE '%w%';</strong>
登录后复制
+----------+-------+---------+------+------------+------------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| name     | owner | species | sex  | birth      | death      |
登录后复制
登录后复制
+----------+-------+---------+------+------------+------------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| Claws    | Gwen  | cat     | m    | 1994-03-17 | NULL       |
登录后复制
登录后复制
| Bowser   | Diane | dog     | m    | 1989-08-31 | 1995-07-29 |
登录后复制
登录后复制
| Whistler | Gwen  | bird    | NULL | 1997-12-09 | NULL       |
登录后复制
登录后复制
+----------+-------+---------+------+------------+------------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
 
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

要想找出正好包含5个字符的名字,使用“_”模式字符:

 

mysql> <strong>SELECT * FROM pet WHERE name LIKE '_____';</strong>
登录后复制
+-------+--------+---------+------+------------+-------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| name  | owner  | species | sex  | birth      | death |
登录后复制
登录后复制
登录后复制
+-------+--------+---------+------+------------+-------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| Claws | Gwen   | cat     | m    | 1994-03-17 | NULL  |
登录后复制
登录后复制
登录后复制
| Buffy | Harold | dog     | f    | 1989-05-13 | NULL  |
登录后复制
登录后复制
登录后复制
+-------+--------+---------+------+------------+-------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
 
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

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

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

         ‘.'匹配任何单个的字符。

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

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

  • 如果REGEXP模式与被测试值的任何地方匹配,模式就匹配(这不同于LIKE模式匹配,只有与整个值匹配,模式才匹配)。
  • 为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”在模式的结尾用“$”

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

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

 

mysql> <strong>SELECT * FROM pet WHERE name REGEXP '^b';</strong>
登录后复制
+--------+--------+---------+------+------------+------------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| name   | owner  | species | sex  | birth      | death      |
登录后复制
登录后复制
+--------+--------+---------+------+------------+------------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL       |
登录后复制
登录后复制
| Bowser | Diane  | dog     | m    | 1989-08-31 | 1995-07-29 |
登录后复制
登录后复制
+--------+--------+---------+------+------------+------------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
 
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

如果你想强制使REGEXP比较区分大小写,使用BINARY关键字使其中一个字符串变为二进制字符串。该查询只匹配名称首字母的小写‘b'。

 

mysql> <strong>SELECT * FROM pet WHERE name REGEXP BINARY '^b';</strong>
登录后复制
<strong> </strong>
登录后复制

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

 

mysql> <strong>SELECT * FROM pet WHERE name REGEXP 'fy$';</strong>
登录后复制
+--------+--------+---------+------+------------+-------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| name   | owner  | species | sex  | birth      | death |
登录后复制
登录后复制
+--------+--------+---------+------+------------+-------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| Fluffy | Harold | cat     | f    | 1993-02-04 | NULL  |
登录后复制
登录后复制
| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL  |
登录后复制
登录后复制
+--------+--------+---------+------+------------+-------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
 
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

为了找出包含一个“w”的名字,使用以下查询:

 

mysql> <strong>SELECT * FROM pet WHERE name REGEXP 'w';</strong>
登录后复制
+----------+-------+---------+------+------------+------------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| name     | owner | species | sex  | birth      | death      |
登录后复制
登录后复制
+----------+-------+---------+------+------------+------------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| Claws    | Gwen  | cat     | m    | 1994-03-17 | NULL       |
登录后复制
登录后复制
| Bowser   | Diane | dog     | m    | 1989-08-31 | 1995-07-29 |
登录后复制
登录后复制
| Whistler | Gwen  | bird    | NULL | 1997-12-09 | NULL       |
登录后复制
登录后复制
+----------+-------+---------+------+------------+------------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
 
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

既然如果一个正则表达式出现在值的任何地方,其模式匹配了,就不必在先前的查询中在模式的两侧放置一个通配符以使得它匹配整个值,就像你使用了一个SQL模式那样。

为了找出包含正好5个字符的名字,使用“^”“$”匹配名字的开始和结尾,和5个“.”实例在两者之间:

 

mysql> <strong>SELECT * FROM pet WHERE name REGEXP '^.....$';</strong>
登录后复制
+-------+--------+---------+------+------------+-------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| name  | owner  | species | sex  | birth      | death |
登录后复制
登录后复制
登录后复制
+-------+--------+---------+------+------------+-------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| Claws | Gwen   | cat     | m    | 1994-03-17 | NULL  |
登录后复制
登录后复制
登录后复制
| Buffy | Harold | dog     | f    | 1989-05-13 | NULL  |
登录后复制
登录后复制
登录后复制
+-------+--------+---------+------+------------+-------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
 
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

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

 

mysql> <strong>SELECT * FROM pet WHERE name REGEXP '^.{5}$';</strong>
登录后复制
+-------+--------+---------+------+------------+-------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| name  | owner  | species | sex  | birth      | death |
登录后复制
登录后复制
登录后复制
+-------+--------+---------+------+------------+-------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
| Claws | Gwen   | cat     | m    | 1994-03-17 | NULL  |
登录后复制
登录后复制
登录后复制
| Buffy | Harold | dog     | f    | 1989-05-13 | NULL  |
登录后复制
登录后复制
登录后复制
+-------+--------+---------+------+------------+-------+
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
bitsCN.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
如何解决Python的表达式语法错误? 如何解决Python的表达式语法错误? Jun 24, 2023 pm 05:04 PM

Python作为一种高级编程语言,易于学习和使用。一旦需要编写Python程序时,无法避免地遇到语法错误,表达式语法错误是常见的一种。在本文中,我们将讨论如何解决Python的表达式语法错误。表达式语法错误是Python中最常见的错误之一,它通常是由于错误的使用语法或缺少必要组件而导致的。在Python中,表达式通常由数字、字符串、变量和运算符组成。最常见的

Java Lambda 表达式实战:用代码解锁函数式编程的奥秘 Java Lambda 表达式实战:用代码解锁函数式编程的奥秘 Feb 26, 2024 am 10:25 AM

Lambda表达式,顾名思义,就是一种以箭头符号(->)为核心的匿名函数。它允许你将代码块作为参数传递给其他方法,或将其存储到变量中供以后使用。Lambda表达式语法简洁、易于理解,非常适合处理数据流和并行计算。1.Lambda表达式的基本语法Lambda表达式的基本语法如下:(参数列表)->{代码块}其中,参数列表和代码块都是可选的。如果只有一个参数,可以省略括号。如果代码块只有一行,可以省略大括号。例如,以下代码块使用Lambda表达式实现了将数字加1的功能:List

在C和C++中,逗号(comma)的用法是用来分隔表达式或语句 在C和C++中,逗号(comma)的用法是用来分隔表达式或语句 Sep 09, 2023 pm 05:33 PM

在C或C++中,逗号“,”有不同的用途。在这里我们将了解如何使用它们。逗号作为运算符。逗号运算符是一个二元运算符,它计算第一个操作数,然后丢弃结果,然后计算第二个操作数并返回值。逗号运算符在C或C++中的优先级最低。示例#include<stdio.h>intmain(){  intx=(50,60);  inty=(func1(),func2());}这里60将被分配给x。对于下一条语句,将首先执行func1(

介绍C语言中的指数函数表达式 介绍C语言中的指数函数表达式 Feb 18, 2024 pm 01:11 PM

C语言中指数函数表达式的写法介绍及代码示例什么是指数函数指数函数是数学中一类常见的函数,可以表示为f(x)=a^x的形式,其中a为底数,x为指数。指数函数主要用于描述指数增长或指数衰减的情况。指数函数的代码示例在C语言中,我们可以使用数学库中的pow()函数来计算指数函数,下面是一个示例程序:#include

Java 中的 lambda 表达式 Java 中的 lambda 表达式 Jun 09, 2023 am 10:17 AM

Java中的lambda表达式随着Java8的发布,lambda表达式成为了Java开发者们最为关注和讨论的话题之一。Lambda表达式可以简化Java程序员繁琐的书写方式,同时也能够提高程序的可读性和维护性。在本文中,我们将深入探讨Java中的lambda表达式,以及它们如何在Java代码中提供更简单、更直观的编程体验。

使用lambda表达式对集合进行循环 使用lambda表达式对集合进行循环 Feb 19, 2024 pm 07:32 PM

lambda表达式是一种匿名函数,它可以很方便地用于遍历集合。在这篇文章中,我们将介绍如何使用lambda表达式来遍历集合,并提供具体的代码示例。在Python中,lambda表达式的语法格式如下:lambda参数列表:表达式lambda表达式的参数列表可以包含一个或多个参数,用逗号隔开。表达式是lambda函数的返回值。下面我们来看一个简单的例子,假设

Python Lambda表达式进阶指南:从入门到精通 Python Lambda表达式进阶指南:从入门到精通 Feb 24, 2024 pm 03:31 PM

Lambda表达式的简介与基本语法Lambda表达式由一个函数参数列表,一个冒号和一个函数体组成。函数参数列表与普通函数的参数列表相同,函数体则是一个表达式,而不是一组语句。#示例:返回一个函数,该函数接收两个数字并返回它们的和sum=lambdax,y:x+yLambda表达式的应用场景Lambda表达式非常适合用作回调函数、过滤器函数和映射函数。回调函数:回调函数是指在另一个函数中调用的函数。Lambda表达式可以轻松创建回调函数,而无需声明其名称。过滤器函数:过滤器函数用于从序列中过滤出满

PHP8.0中的try语句块支持表达式 PHP8.0中的try语句块支持表达式 May 14, 2023 am 08:12 AM

随着计算机技术的飞速发展,编程语言也在不断地升级和完善。其中,PHP作为一种常用的Web开发语言,也在不断地推陈出新,不断地推出新的版本。最近,PHP8.0版本的发布引起了广泛的关注。其中,新版本中对于异常处理机制的改进引起了很多人的关注。本文将围绕着PHP8.0中的try语句块支持表达式这一主题展开讨论。一、PHP8.0异常处理机制的改进在之前的版本中,P

See all articles