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

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

Jun 01, 2016 pm 01:23 PM
expression

正则表达式

bitsCN.com

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

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

 

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

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

 

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

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

 

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

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

 

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

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>
Copy after login
+--------+--------+---------+------+------------+------------+
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
| name   | owner  | species | sex  | birth      | death      |
Copy after login
Copy after login
+--------+--------+---------+------+------------+------------+
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL       |
Copy after login
Copy after login
| Bowser | Diane  | dog     | m    | 1989-08-31 | 1995-07-29 |
Copy after login
Copy after login
+--------+--------+---------+------+------------+------------+
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
 
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login

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

 

mysql> <strong>SELECT * FROM pet WHERE name REGEXP BINARY '^b';</strong>
Copy after login
<strong> </strong>
Copy after login

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

 

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

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

 

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

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

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

 

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

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

 

mysql> <strong>SELECT * FROM pet WHERE name REGEXP '^.{5}$';</strong>
Copy after login
+-------+--------+---------+------+------------+-------+
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
| name  | owner  | species | sex  | birth      | death |
Copy after login
Copy after login
Copy after login
+-------+--------+---------+------+------------+-------+
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
| Claws | Gwen   | cat     | m    | 1994-03-17 | NULL  |
Copy after login
Copy after login
Copy after login
| Buffy | Harold | dog     | f    | 1989-05-13 | NULL  |
Copy after login
Copy after login
Copy after login
+-------+--------+---------+------+------------+-------+
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
bitsCN.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to solve Python expression syntax errors? How to solve Python expression syntax errors? Jun 24, 2023 pm 05:04 PM

Python, as a high-level programming language, is easy to learn and use. Once you need to write a Python program, you will inevitably encounter syntax errors, and expression syntax errors are a common one. In this article, we will discuss how to resolve expression syntax errors in Python. Expression syntax errors are one of the most common errors in Python, and they are usually caused by incorrect usage of syntax or missing necessary components. In Python, expressions usually consist of numbers, strings, variables, and operators. most common

In C and C++, comma is used to separate expressions or statements In C and C++, comma is used to separate expressions or statements Sep 09, 2023 pm 05:33 PM

In C or C++, the comma "," has different uses. Here we will learn how to use them. Commas as operators. The comma operator is a binary operator that evaluates the first operand, discards the result, then evaluates the second operand and returns the value. The comma operator has the lowest precedence in C or C++. Example #include<stdio.h>intmain(){ intx=(50,60); inty=(func1(),func2());} Here 60 will be assigned to x. For the next statement, func1( will be executed first

Introduction to exponential function expressions in C language Introduction to exponential function expressions in C language Feb 18, 2024 pm 01:11 PM

Introduction to how to write exponential function expressions in C language and code examples What is an exponential function? The exponential function is a common type of function in mathematics. It can be expressed in the form of f(x)=a^x, where a is the base and x is the exponent. . Exponential functions are mainly used to describe exponential growth or exponential decay. Code example of exponential function In C language, we can use the pow() function in the math library to calculate the exponential function. The following is a sample program: #include

lambda expression in Java lambda expression in Java Jun 09, 2023 am 10:17 AM

Lambda expressions in Java With the release of Java 8, lambda expressions have become one of the most concerned and discussed topics among Java developers. Lambda expressions can simplify Java programmers' tedious writing methods, and can also improve the readability and maintainability of programs. In this article, we will take a deep dive into lambda expressions in Java and how they provide a simpler and more intuitive programming experience in Java code.

Loop over a collection using lambda expressions Loop over a collection using lambda expressions Feb 19, 2024 pm 07:32 PM

A lambda expression is an anonymous function that can be conveniently used to iterate over a collection. In this article, we will introduce how to use lambda expressions to iterate over collections, and provide specific code examples. In Python, the syntax format of a lambda expression is as follows: lambda parameter list: The parameter list of an expression lambda expression can contain one or more parameters, separated by commas. The expression is the return value of the lambda function. Let's look at a simple example below, assuming

Advanced Guide to Python Lambda Expressions: From Beginner to Mastery Advanced Guide to Python Lambda Expressions: From Beginner to Mastery Feb 24, 2024 pm 03:31 PM

Introduction and basic syntax of Lambda expressions Lambda expressions consist of a function parameter list, a colon and a function body. The function parameter list is the same as that of an ordinary function, and the function body is an expression rather than a set of statements. #Example: Return a function that receives two numbers and returns their sum sum=lambdax,y:x+y Application scenarios of Lambda expressions Lambda expressions are very suitable for use as callback functions, filter functions and mapping functions. Callback function: A callback function is a function called within another function. Lambda expressions make it easy to create callback functions without declaring their names. Filter function: The filter function is used to filter out full

Java Lambda Expression in Practice: Unlocking the Mysteries of Functional Programming with Code Java Lambda Expression in Practice: Unlocking the Mysteries of Functional Programming with Code Feb 26, 2024 am 10:25 AM

Lambda expression, as the name suggests, is an anonymous function with the arrow symbol (->) as its core. It allows you to pass blocks of code as arguments to other methods, or store them into variables for later use. Lambda expression syntax is concise and easy to understand, and it is very suitable for processing data flow and parallel computing. 1. The basic syntax of Lambda expression The basic syntax of Lambda expression is as follows: (parameter list)->{code block} Among them, the parameter list and code block are optional. If there is only one parameter, the parentheses can be omitted. If the code block is only one line, the curly braces can be omitted. For example, the following code block uses a Lambda expression to add 1 to a number: List

The try statement block in PHP8.0 supports expressions The try statement block in PHP8.0 supports expressions May 14, 2023 am 08:12 AM

With the rapid development of computer technology, programming languages ​​are constantly being upgraded and improved. Among them, PHP, as a commonly used web development language, is constantly innovating and launching new versions. Recently, the release of PHP8.0 version has attracted widespread attention. Among them, the improvements to the exception handling mechanism in the new version have attracted a lot of attention. This article will focus on the topic of expression support in the try statement block in PHP8.0. 1. Improvements in the exception handling mechanism of PHP8.0 In previous versions, P

See all articles