ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL必知必会 学习笔记 第九章 用正则表达式进行搜索

2020-12-07 09:02:20  阅读:264  来源: 互联网

标签:匹配 columnName 必知 正则表达式 MySQL REGEXP WHERE SELECT


正则表达式是用来匹配文本的特殊的串,它用正则表达式语言来建立。

MySQL支持的正则表达式仅为正则表达式的一个很小的子集。

可通过WHERE子句使用正则表达式过滤SELECT检索出的数据。

检索条件列包含字符100的所有行:

SELECT columnName
FROM tableName
WHERE columnName REGEXP '100';

正则表达式.00中的点表示匹配任意一个字符。

LIKE匹配整个列,而REGEXP会在列中找到匹配模式串的部分,如果存在此部分就会返回该行。

MySQL 3.23.4后,正则表达式匹配不区分大小写,为区分大小写,可在使用BINARY关键字:WHERE columnName REGEXP BINARY '.00'

检索条件列包含字符100或200的所有行:

SELECT columnName
FROM tableName
WHERE columnName REGEXP '100|200';

使用字符集合检索条件列包含字符100或200或300的所有行:

SELECT columnName
FROM tableName
WHERE columnName REGEXP '[123]00';

以上正则表达式部分是缩写,也可写为[1|2|3]00

检索条件列不包含字符100或200或300的.00的所有行:

SELECT columnName
FROM tableName
WHERE columnName REGEXP '[^123]00';

字符集合可被简化,[1-9]表示不含1的数字集合,[b-z]表示不含a的字母集合。

使用转义符\\检索条件列含特殊字符如.的所有行:

SELECT columnName
FROM tableName
WHERE columnName REGEXP '\\.';

转义方括号时:
在这里插入图片描述
在这里插入图片描述

转义符也能用来引用元字符:
在这里插入图片描述
转义符之所以需要两个反斜杠是因为MySQL自己解释一个,正则表达式库解释另一个。

字符类是预定义的字符集:
在这里插入图片描述
在这里插入图片描述
'\\([0-9] sticks?\\)'中的\\(会匹配([0-9]会匹配数字,sticks?会匹配sticksticks(?会匹配它之前的字符出现一次或零次的情况),\\)会匹配)

[[:digit:]]{4}匹配连续出现的四个数字。

在这里插入图片描述
^[0-9\\.]表示匹配以数字或点开头的文本。^放在集合中表示否定该集合,放在开头表示串的开始处。

可同时使用^$像LIKE一样匹配整个串:
在这里插入图片描述
不使用数据库表的情况下测试正则表达式:

SELECT 'hello' REGEXP '[0-9]';

运行它:
在这里插入图片描述
REGEXP总是返回0(匹配失败)或1(匹配成功)。

标签:匹配,columnName,必知,正则表达式,MySQL,REGEXP,WHERE,SELECT
来源: https://blog.csdn.net/tus00000/article/details/110790487

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有