mysql正则搜索_MySQL用正则表达式进行搜索

MySQL在日常开发当中是很重要的一部分,写得一手好SQL是最基本,最重要的部分,今天要分享的是使用正则表达式来进行搜索结果,当使用匹配、比较和通配操作符寻找数据。对 于基本的过滤(或者甚至是某些不那么基本的过滤),这样就足够了。但 随着过滤条件的复杂性的增加,WHERE子句本身的复杂性也有必要增加。 这也就是正则表达式变得有用的地方。

36bc199f7da28cf68795a541cd81a00b.png

如果你想从一个文本文件中提取电话号码,可 以使用正则表达式。如果你需要查找名字中间有数字的所有文件,可以 使用一个正则表达式。如果你想在一个文本块中找到所有重复的单词, 可以使用一个正则表达式。如果你想替换一个页面中的所有URL为这些 URL的实际HTML链接,也可以使用一个正则表达式(对于最后这个例子, 或者是两个正则表达式)。 所有种类的程序设计语言、文本编辑器、操作系统等都支持正则表 达式。有见识的程序员和网络管理员已经关注作为他们技术工具重要内 容的正则表达式很长时间了。

正则表达式语言是用来完成 刚讨论的所有工作以及更多工作的一种特殊语言。与任意语言一样,正 则表达式具有你必须学习的特殊的语法和指令。那么,正则表达式与MySQL有何关系?已经说过,正则表达式的作 用是匹配文本,MySQL 用WHERE子句对正则表达式提供了初步的支持,允许你指定正则表达式, 过滤SELECT检索出的数据。

9764f754f8ede41fe94bb54c691d475d.png

除关键字LIKE被REGEXP替代外,这条语句看上去非常像使用 LIKE的语句(第8章)。它告诉MySQL:REGEXP后所跟的东西作 为正则表达式(与文字正文1000匹配的一个正则表达式)处理。

为什么要费力地使用正则表达式?在刚才的例子中,正则表达式确 实没有带来太多好处(可能还会降低性能),不过,请考虑下面的例子:

c56e35693c360202785558c7cf7bde07.png

这里使用了正则表达式.000。.是正则表达式语言中一个特殊 的字符。它表示匹配任意一个字符,因此,1000和2000都匹配 且返回。 当然,这个特殊的例子也可以用LIKE和通配符来完成

7fc4312d9ac4b589154bfb50b585bd92.png

语句中使用了正则表达式1000|2000。|为正则表达式的OR操作 符。它表示匹配其中之一,因此1000和2000都匹配并返回。 使用|从功能上类似于在SELECT语句中使用OR语句,多个OR条件可并 入单个正则表达式为正则表达式的OR操作 符。它表示匹配其中之一, 使用|从功能上类似于在SELECT语句中使用OR语句,多个OR条件可并 入单个正则表达式。

正如所见,[]是另一种形式的OR语句。事实上,正则表达式[123]Ton 为[1|2|3]Ton的缩写,也可以使用后者。但是,需要用[]来定义OR语句 查找什么。为更好地理解这一点,请看下面的例子:

7a05dc1930db7702a9a6d80939231ec6.png

这并不是期望的输出。两个要求的行被检索出来,但还检索出 了另外3行。之所以这样是由于MySQL假定你的意思是'1'或 '2'或'3 ton'。除非把字符|括在一个集合中,否则它将应用于整个串。 字符集合也可以被否定,即,它们将匹配除指定字符外的任何东西。 为否定一个字符集,在集合的开始处放置一个^即可。因此,尽管[123] 匹配字符1、2或3,但[^123]却匹配除这些字符外的任何东西。

mysql还是在开发中占据一定重要的位置,从最基础的抓起还是很重要的,不至于拿到一个sql语句看不懂那种,跟别谈写出重要的sql了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值