mysql模式匹配和正则表达式_MySQL
正则表达式
SQL模式匹配
_ 下划线匹配任何单个字符
% 匹配任意数码字符
正则表达式的匹配
使用REGEXP和NOT REGEXP操作符
‘.’匹配任何单个的字符。
字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的范围,使用一个“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
“ * ”匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配任何数量的数字,而“.*”匹配任何数量的任何字符。
为了找出以“b”开头的名字,使用“^”匹配名字的开始:
mysql> SELECT * FROM pet WHERE name REGEXP '^b';
SELECT * FROM `student` WHERE `username` REGEXP '1$'
为了找出包含一个“w”的名字,使用以下查询:
mysql> SELECT * FROM pet WHERE name REGEXP 'w';
你也可以使用“{n}”“重复n次”操作符重写前面的查询:
mysql> SELECT * FROM pet WHERE name REGEXP '^.{5}$';
对于REGEXP操作符,正则表达式可以使用任何下述特殊字符和结构:
· ^
匹配字符串的开始部分。
mysql> <strong>SELECT 'fo/nfo' REGEXP '^fo$';</strong> -> 0
mysql> <strong>SELECT 'fofo' REGEXP '^fo';</strong> -> 1
· $
匹配字符串的结束部分。
mysql> <strong>SELECT 'fo/no' REGEXP '^fo/no$';</strong> -> 1
mysql> <strong>SELECT 'fo/no' REGEXP '^fo$';</strong> -> 0
· .
匹配任何字符(包括回车和新行)。
mysql> <strong>SELECT 'fofo' REGEXP '^f.*$';</strong> -> 1
mysql> <strong>SELECT 'fo/r/nfo' REGEXP '^f.*$';</strong> -> 1
· a*
匹配0或多个a字符的任何序列。
mysql> <strong>SELECT 'Ban' REGEXP '^Ba*n';</strong> -> 1
mysql> <strong>SELECT 'Baaan' REGEXP '^Ba*n';</strong> -> 1
mysql> <strong>SELECT 'Bn' REGEXP '^Ba*n';</strong> -> 1
· a+
匹配1个或多个a字符的任何序列。
mysql> <strong>SELECT 'Ban' REGEXP '^Ba+n';</strong> -> 1
mysql> <strong>SELECT 'Bn' REGEXP '^Ba+n';</strong> -> 0
· a?
匹配0个或1个a字符。
mysql> <strong>SELECT 'Bn' REGEXP '^Ba?n';</strong> -> 1
mysql> <strong>SELECT 'Ban' REGEXP '^Ba?n';</strong> -> 1
mysql> <strong>SELECT 'Baan' REGEXP '^Ba?n';</strong> -> 0
· de|abc
匹配序列de或abc。
mysql> <strong>SELECT 'pi' REGEXP 'pi|apa';</strong> -> 1
mysql> <strong>SELECT 'axe' REGEXP 'pi|apa';</strong> -> 0
mysql> <strong>SELECT 'apa' REGEXP 'pi|apa';</strong> -> 1
mysql> <strong>SELECT 'apa' REGEXP '^(pi|apa)$';</strong> -> 1
mysql> <strong>SELECT 'pi' REGEXP '^(pi|apa)$';</strong> -> 1
mysql> <strong>SELECT 'pix' REGEXP '^(pi|apa)$';</strong> -> 0
· (abc)*
匹配序列abc的0个或多个实例。
mysql> <strong>SELECT 'pi' REGEXP '^(pi)*$';</strong> -> 1
mysql> <strong>SELECT 'pip' REGEXP '^(pi)*$';</strong> -> 0
mysql> <strong>SELECT 'pipi' REGEXP '^(pi)*$';</strong> -> 1
· {1}, {2,3}
{n}或{m,n}符号提供了编写正则表达式的更通用方式,能够匹配模式的很多前述原子(或“部分”)。m和n均为整数。
o a*
可被写入为a{0,}。
o a+
可被写入为a{1,}。
o a?
可被写入为a{0,1}。
更准确地讲,a{n}与a的n个实例准确匹配。a{n,}匹配a的n个或更多实例。a{m,n}匹配a的m~n个实例,包含m和n。
m和n必须位于0~RE_DUP_MAX(默认为255)的范围内,包含0和RE_DUP_MAX。如果同时给定了m和n,m必须小于或等于n。
mysql> <strong>SELECT 'abcde' REGEXP 'a[bcd]{2}e';</strong> -> 0
mysql> <strong>SELECT 'abcde' REGEXP 'a[bcd]{3}e';</strong> -> 1
mysql> <strong>SELECT 'abcde' REGEXP 'a[bcd]{1,10}e';</strong> -> 1
· [a-dX], [^a-dX]
匹配任何是(或不是,如果使用^的话)a、b、c、d或X的字符。两个其他字符之间的“-”字符构成一个范围,与从第1个字符开始到第2个字符之间的所有字符匹配。例如,[0-9]匹配任何十进制数字 。要想包含文字字符“]”,它必须紧跟在开括号“[”之后。要想包含文字字符“-”,它必须首先或最后写入。对于[]对内未定义任何特殊含义的任何字符,仅与其本身匹配。
mysql> <strong>SELECT 'aXbc' REGEXP '[a-dXYZ]';</strong> -> 1
mysql> <strong>SELECT 'aXbc' REGEXP '^[a-dXYZ]$';</strong> -> 0
mysql> <strong>SELECT 'aXbc' REGEXP '^[a-dXYZ]+$';</strong> -> 1
mysql> <strong>SELECT 'aXbc' REGEXP '^[^a-dXYZ]+$';</strong> -> 0
mysql> <strong>SELECT 'gheis' REGEXP '^[^a-dXYZ]+$';</strong> -> 1
mysql> <strong>SELECT 'gheisa' REGEXP '^[^a-dXYZ]+$';</strong> -> 0
· [.characters.]
在括号表达式中(使用[和]),匹配用于校对元素的字符序列。字符为单个字符或诸如新行等字符名。在文件regexp/cname.h中,可找到字符名称的完整列表。
mysql> <strong>SELECT '~' REGEXP '[[.~.]]';</strong> -> 1
mysql> <strong>SELECT '~' REGEXP '[[.tilde.]]';</strong> -> 1
· [=character_class=]
在括号表达式中(使用[和]),[=character_class=]表示等同类。它与具有相同校对值的所有字符匹配,包括它本身,例如,如果o和(+)均是等同类的成员,那么[[=o=]]、[[=(+)=]]和[o(+)]是同义词。等同类不得用作范围的端点。
· [:character_class:]
在括号表达式中(使用[和]),[:character_class:]表示与术语类的所有字符匹配的字符类。标准的类名称是:
alnum |
文字数字字符 |
alpha |
文字字符 |
blank |
空白字符 |
cntrl |
控制字符 |
digit |
数字字符 |
graph |
图形字符 |
lower |
小写文字字符 |
图形或空格字符 |
|
punct |
标点字符 |
space |
空格、制表符、新行、和回车 |
upper |
大写文字字符 |
xdigit |
十六进制数字字符 |
它们代表在ctype(3)手册页面中定义的字符类。特定地区可能会提供其他类名。字符类不得用作范围的端点。
mysql> <strong>SELECT 'justalnums' REGEXP '[[:alnum:]]+';</strong> -> 1

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

本文探讨了Docker中的优化MySQL内存使用量。 它讨论了监视技术(Docker统计,性能架构,外部工具)和配置策略。 其中包括Docker内存限制,交换和cgroups

本文介绍了MySQL的“无法打开共享库”错误。 该问题源于MySQL无法找到必要的共享库(.SO/.DLL文件)。解决方案涉及通过系统软件包M验证库安装

本文讨论了使用MySQL的Alter Table语句修改表,包括添加/删除列,重命名表/列以及更改列数据类型。

本文比较使用/不使用PhpMyAdmin的Podman容器直接在Linux上安装MySQL。 它详细介绍了每种方法的安装步骤,强调了Podman在孤立,可移植性和可重复性方面的优势,还

本文提供了SQLite的全面概述,SQLite是一个独立的,无服务器的关系数据库。 它详细介绍了SQLite的优势(简单,可移植性,易用性)和缺点(并发限制,可伸缩性挑战)。 c

本指南展示了使用自制在MacOS上安装和管理多个MySQL版本。 它强调使用自制装置隔离安装,以防止冲突。 本文详细详细介绍了安装,起始/停止服务和最佳PRA

文章讨论了为MySQL配置SSL/TLS加密,包括证书生成和验证。主要问题是使用自签名证书的安全含义。[角色计数:159]

文章讨论了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比较了它们对初学者和高级用户的功能和适合性。[159个字符]
