首页 数据库 mysql教程 MYSQL入门学习之二:使用正则表达式搜索_MySQL

MYSQL入门学习之二:使用正则表达式搜索_MySQL

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

正则表达式

bitsCN.com


MYSQL入门学习之二:使用正则表达式搜索

 

一、正则表达式介绍

正则表达式是用来匹配文本的特殊的串(字符集合)。

 

二、使用MySQL正则表达式

 

1、MySQL仅仅支持多数正则表达式实现的一个很小的子集。

 

2、LIKE匹配整个列值;而REGEXP匹配列值的子串,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回。看下面的例子:

[sql] 

mysql>select username from v9_admin where username like 'space';  

Emptyset (0.00 sec)  

   

mysql>select username from v9_admin where username REGEXP 'space';  

+-----------+  

|username  |  

+-----------+  

|warmspace |  

+-----------+  

1 rowin set (0.02 sec)  

3、默认MySQL中的正则表达式匹配不区分大小写,可使用BINARY关键字区分大小写,如

 

[sql] 

mysql>select username from v9_admin  

    -> where username REGEXP BINARY'SPACCE';  

Emptyset (0.04 sec)  

4、进行OR匹配:为搜索两个串之一,使用|,如下所示:

 

[sql] 

mysql>select roleid from v9_admin_role  

    -> where roleid REGEXP '1|3';  

+--------+  

|roleid |  

+--------+  

|      1 |  

|      3 |  

+--------+  

2 rowsin set (0.00 sec)  

5、匹配几个字符之一:匹配任何单一字符。如下所示:

 

[sql] 

mysql>select name from v9_collection_node  

    -> where name REGEXP '005-[123]';  

+-----------------+  

|name            |  

+-----------------+  

|101-02-01-005-2 |  

|101-02-01-005-1 |  

|101-02-01-005-3 |  

+-----------------+  

3 rowsin set (0.00 sec)  

正如所见,[]是另一种形式的OR语句。'005-[123]'与’005-[1|2|3]’是等价的。

 

匹配除给定字符外的字符:

 

[sql] 

mysql>select name from v9_collection_node  

    -> where name REGEXP '005-[^123]';  

+-------------------+  

|name              |  

+-------------------+  

|101-02-01-005-4.2 |  

|101-02-01-005-4   |  

|101-02-01-005-5   |  

+-------------------+  

3 rowsin set (0.00 sec)  

6、可使用-来定义一个范围。如[1-9],[a-b]。

 

[sql] 

mysql>select name from v9_collection_node  

    -> where name REGEXP '005-[1-3]';  

+-----------------+  

|name            |  

+-----------------+  

|101-02-01-005-2 |  

|101-02-01-005-1 |  

|101-02-01-005-3 |  

+-----------------+  

3 rowsin set (0.00 sec)  

7、为了匹配特殊字符,必须用//为前导,例如//-,//.等。这种处理即转义(escaping)。

 

多数正则表达式实现使用单个反斜杠转义特殊字符,但MYSQL要求两个(MYSQL自己解释一个,正则表达式库解释另一个)。

 

//也用来引用元字符(具有特殊含义的字符),如下表:

 

MYSQL入门学习之二:使用正则表达式搜索_MySQL

 

8、为了更方便工作,可以使用预定义的字符集,称为字符类(character class)。

 

[sql] 

mysql> select name fromv9_collection_node  

   -> where name REGEXP '[[:digit:]]';  

+-------------------+  

| name              |  

+-------------------+  

| 101-10-01-002-1   |  

| 101-02-01-005-4.2 |  

| 101-02-01-005-2   |  

| 101-02-01-005-1   |  

| 101-02-01-005-3   |  

| 101-02-01-005-4   |  

| 101-02-01-005-5   |  

| 101-10-01-002-2   |  

| 101-11-04-001-1   |  

+-------------------+  

9 rowsin set (0.00 sec)  


MYSQL入门学习之二:使用正则表达式搜索_MySQL
 

9、使用正则表达式重复元字符匹配多个实例:

 

[sql] 

mysql> select name fromv9_collection_node  

   -> where name REGEXP '1{2}';  

+-----------------+  

| name            |  

+-----------------+  

| 101-11-04-001-1 |  

+-----------------+  

1 rowin set (0.00 sec)  


MYSQL入门学习之二:使用正则表达式搜索_MySQL
 

10、定位符(为了匹配特定位置的文本):

 

[sql] 

mysql> select name from v9_collection_node  

    -> where name REGEXP '2$';  

+-------------------+  

| name              |  

+-------------------+  

| 101-02-01-005-4.2 |  

| 101-02-01-005-2   |  

| 101-10-01-002-2   |  

+-------------------+  

3 rows in set (0.00 sec)  


MYSQL入门学习之二:使用正则表达式搜索_MySQL
 

11、使REGEXP起类似LIKE的作用,它们的区别在于LIKE匹配整个串而REGEXP匹配子串。利用定位符,通过用^开始每个表达式,用$结束每个表达式。

 

12、简单的正则表达式测试:可以在不使用数据库表的情况下用SELECT来测试正则表达式。REGEXP检查总是返回0或1(匹配)。

 

[sql] 

mysql> select 'hello' REGEXP'[0-9]';  

+------------------------+  

| 'hello' REGEXP '[0-9]' |  

+------------------------+  

|                      0 |  

+------------------------+  

1 row in set (0.00 sec)  

 

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脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 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)

如何解决Python的表达式语法错误? 如何解决Python的表达式语法错误? Jun 24, 2023 pm 05:04 PM

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

在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表达式可以轻松创建回调函数,而无需声明其名称。过滤器函数:过滤器函数用于从序列中过滤出满

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

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

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