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

  正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较,mysql允许你指定正则表达式,过滤select检索出的数据。但是mysql仅仅支持正则表达式的一个子集。

  1、基本字符匹配:

    select prod_name from products where prod_name regexp '1000' order by prod_name;

    以上语句检索到prod_name包含文本1000的所有行。在regexp后面所跟的东西作为正则表达式处理。但是正则的好处还有,如下:

    select prod_name from products where prod_name regexp '.000' order by prod_name;

    这里的.000表示匹配任意一个字符,当然1000和2000都匹配且返回。

    like 和 regexp的区别:like匹配整个列,如果匹配的文本在列值中出现,mysql将不会找到它。而regexp在列值类进行匹配,如果被匹配的文本在列值中出现,regexp将会找到它。但是regexp能否用来匹配整个列值,我们使用和$定位符即可。

 

  2、进行or匹配

    为搜索两个串(或者为这两个串,或者为另一个串),使用|,如下:

    select prod_name from products where prod_name regexp ‘1000|2000’ order by prod_name;

    类似where匹配中的OR子句。可以将多个or条件并入一个正则表达式。

    

  3、匹配几个字符之一:

    如果你只想匹配特定字符,可通过制定一组用[和]括起来的字符来完成,如下:

    select prod_name from products where prod_name regexp '[12]ton' order by prod_name

    上述语句的意思是匹配1或2,因此1ton和2ton都匹配且返回。其中[12]等效于[1|2]。但是如下:

    select prod_name from products where prod_name regexp '1|2|3ton' order by prod_name;

    以上语句的结果是错误的,因为你让mysql检索的是1或2或3ton,所以他的结果是错误的。所以需要用[]括起来再与其他进行连接起来匹配。

    也可以使用[^12],匹配除这些字符外的任何东西。

 

   4、匹配范围:集合可用来定义要匹配的一个或多个字符,如下:[0123456789]

     以上语句的等效语句是[0-9],我们可使用-来定义范围,范围不限于完整的结合,如[1-3][6-9]也是合法的范围,范围也不一定只是数值的,[a-z]匹配任意字母字符。

     select prod_name from products where prod_name regexp '[1-5]ton' order by prod_name;

     以上主要匹配1-5的数据。

  

   5、匹配特殊字符:如果你需要特殊匹配出现在正则表达式中的这些特殊字符怎么办?如下我们想匹配.这个字符。

    select vend_name from vendors where vend_name regexp '\\.' order by vend_name;

    这里使用了转义,正则中一些具有特殊含义的字符均可以使用其进行转义。包括.、|、[]等,\\也可以用来引用元字符(具有特殊含义的字符),如下:

    \\f                  换页

    \\n         换行

    \\r          回车

    \\t          制表

    \\v         纵向制表

    但是如果我们为了匹配\,我们需要使用\\

 

  6、匹配字符类:我们还可以使用你自己经常使用的数字、所有字母或所有数字字母字符等的匹配。我们可以使用预定义字符集,成为字符类,如下: 

    select prod_name from products where prod_name regexp '[[:digit:]]{4}' order by prod_name;

    [:alnum:]   任意字母和数字  (a-z A-Z  0-9)

    ['alpha:]     任意字符(a-z A-Z)

    [:blank:]     空格和制表[\\t]

    [:cntrl:]       ASCII控制字符[ascii 0-31和127]

    [:digit:]       任意数字[0-9]

 

  7、匹配多个实例:我们之前使用的正则表达式都试图匹配单词出现,如果存在一个匹配,该行被检索出来,如果不存在,检索不出任何行。但是,例如,如果我们需要寻找所有的数,不管数中包含多少数字,或者你可能想寻找一个单词并且还能够适应一个未遂的s、

    select prod_name from products where prod_name regexp '\\([0-9] sticks?\\)' order by prod_name;

    以上语句的正则表达的含义是匹配在括号内的0-9之间的sticks,可以有s,也可以没有s,这是根据?的解释

    *      0个或多个匹配

    +        1个或多个匹配

    ?       0个或1个匹配

    {n}                   指定数目的匹配

    {n,}                不少于指定数目的匹配

    {n,m}               匹配数目的范围

  select prod_name form products where prod_name regexp '[[:digit:]]{4}' order by prod_name;

  以上语句匹配的是匹配连在一起的是个数字

  

  8、定位符:之前都是匹配一个串中任意位置的文本,为了匹配特定位置的文本,需要如下的定位符。

  例如,你想找出一个数(包括以小数点开始的数)开始的所有产品,我们只能使用定位符。如下:

  select prod_name from products where prod_name regexp '^[0-9\\.]' order by prod_name;

  以上语句表达的是只在.或者任意数字为串中第一个字符时才匹配。

  ^文本开始

  $文本结尾

  [[:<:]]  词的开始

  [[:>:]]  词的结尾

转载于:https://www.cnblogs.com/television/p/8343257.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python爬虫课程大纲_马哥2018python全栈+爬虫+高端自动化课程大纲

资源内容&#xff1a; 马哥2018python全栈爬虫高端自动化课程大纲|____51项目八-跳板机.rar|____50项目七-运维流程系统.rar|____49项目六-任务调度系统scheduler.rar|____48项目五CMDB资产管理.rar|____47项目四-多人博客开发.rar|____46(项目三)React开发及Todolist项目.rar|…

NopCommerce用.net core重写ef

最近看了NopCommerce源码&#xff0c;用core学习着写了一个项目&#xff0c;修改的地方记录下。项目地址 NopCommerce框架出来好久了。18年的第一季度 懒加载出来后也会全部移动到.net core。那么就更好玩了。 项目内容 模仿部分分层模式引擎机制DI容器EF仓储模式Mapping部分修…

服务器u8系统数据库不存在,用友u8服务器端数据库不装

用友u8服务器端数据库不装 内容精选换一换本章节指导您使用MongoDB客户端&#xff0c;通过弹性云服务器内网方式连接GaussDB(for Mongo)集群实例。操作系统使用场景&#xff1a;弹性云服务器的操作系统以Linux为例&#xff0c;客户端本地使用的计算机系统以Windows为例。目标实…

ie传递给系统调用的数据区域太小_内存区域与内存溢出异常

自动内存管理机制运行时数据区&#xff1a;Java虚拟机定义了在程序执行期间使用的各种运行时数据区域。其中一些数据区域是在Java虚拟机启动时创建的&#xff0c;仅在Java虚拟机退出时销毁。其他数据区域是每个线程所占的空间。线程数据区域是随着线程销毁和创建的。PC 寄存器(…

0010服务器无对应信息,服务器版本对应的内存

服务器版本对应的内存 内容精选换一换硬件要求如表1所示。操作系统要求如表2所示。上表中所需Ubuntu下载地址&#xff1a;服务器1&#xff1a;Ubuntu 18.04.1镜像包、Ubuntu 16.04.4 镜像包。服务器2&#xff1a;Ubuntu 16.04.3 镜像包。在安装操作系统过程中“选择软件列表”时…

idea中连接mysql插入成功数据 在navicat中刷新表格没有数据_MySQL入门简记

1、MySQL和Navicat的安装下载地址&#xff1a;MySQL官方网站 https://dev.mysql.com/downloads双击下载的mysql-installer-community-8.0.17.0 .msi开始安装。需要注意&#xff08;Authentication Method&#xff09;这一步&#xff1a;因为需要使用客户端navicat&#xff0c;在…

jdbc执行sql 不支持“variant”数据类型。

把查询出来的列转换下类型 select cast(a as varchar(500)) from bcast( as varchar(500)) 转载于:https://www.cnblogs.com/zhousiwei/p/10625694.html

for循环数据量太大_中文文本分类roberta大力出奇迹之数据量大的问题

问题描述: 笔者在文本分类场景中使用了robertapooldense的三分类模型。采用预训练模型做项目的时候经常苦于数据太少&#xff0c;模型泛化性差&#xff0c;因此收集了1300W数据。在我尝试暴力出奇迹的时候&#xff0c;遇到了部分问题&#xff0c;在此记录一下。一. 数据预处理时…

谁决定了人的选择?

是好恶&#xff1f; 还是利益&#xff1f; 你看到的 是4个 圆点 还是 一头 大象&#xff1f; 用 利益 来衡量人的动机 当 不能解释的 时候 用情感 来弥补 那些 你最喜欢的 往往 是 最伤害你的 转载于:https://www.cnblogs.com/fangtengfei/p/8362125.html

future.cancel不能关闭线程_彻底弄懂线程池-newFixedThreadPool实现线程池

public class ExecutorServiceTest {public static void main(String[] args) throws IOException, InterruptedException {// 创建一个固定大小的线程池ExecutorService service Executors.newFixedThreadPool(3);for (int i 0; i < 10; i) {System.out.println("创…

Spring实战(十三)Spring事务

1、什么是事务&#xff08;Transaction&#xff09;&#xff1f; 事务是指逻辑上的一组操作&#xff0c;要么全部成功&#xff0c;要么全部失败。 事务是指将一系列数据操作捆绑成为一个整体进行统一管理。如果某一事务执行成功&#xff0c;则该事务中进行的所有数据更改均会提…

python enumerate_Python中enumerate用法详解

enumerate()是python的内置函数、适用于python2.x和python3.x enumerate在字典上是枚举、列举的意思 enumerate参数为可遍历/可迭代的对象(如列表、字符串) enumerate多用于在for循环中得到计数&#xff0c;利用它可以同时获得索引和值&#xff0c;即需要index和value值的时候可…

java定时任务详解

首先,要创建你自己想要定时的实体类 Service("smsService")Transactionalpublic class SmsSendUtil { Autowired private SmsDao smsDao; Autowired private ShortLinkService shortLinkService; private Logger logger Logger.getLogger(this.getClass()); 下面的这…

解密SVM系列(二):SVM的理论基础(转载)

解密SVM系列&#xff08;二&#xff09;&#xff1a;SVM的理论基础 原文博主讲解地太好了 收藏下 解密SVM系列&#xff08;三&#xff09;&#xff1a;SMO算法原理与实战求解 支持向量机通俗导论&#xff08;理解SVM的三层境界&#xff09; 上节我们探讨了关于拉格朗日乘子…

cout输出数组_让程序从1开始一直执行++操作,10秒钟能输出最大的数是多少

问题描述如果写一段代码&#xff0c;让程序从 1 开始一直执行 操作&#xff0c;在规定的 10s 钟内&#xff0c;你能输出的最大数是多少&#xff1f;并将它打印到屏幕上。乍一看&#xff0c;你会觉得它是一道算法题&#xff0c;再细想&#xff1a;不对&#xff01;这可能是一道…

网络安全-使用HTTP动词篡改的认证旁路

这个东西去年的安全扫描都没有&#xff0c;今天就扫出来了&#xff0c;非常奇怪的一个东西。好吧&#xff0c;找资料找原因。结果可能应为搜索名词的原因&#xff0c;这个问题在群友的帮助下解决了。 在我理解中servlet只有post和get方法&#xff0c;然后结果怎么出来这么多奇奇…

python爬取知乎问题_python爬取知乎首页问题

我的代码如下&#xff1a;importurllib.requestimporthttp.cookiejarurl_a"https://www.zhihu.com/"url_a"https://www.zhihu.com/explore"url_b"https://www.zhihu.com/signup?next%2F"head... 我的代码如下&#xff1a; import urllib.reques…

微信公众号管理

微信公众号图文编辑 在新建图文时&#xff0c;如果有想插入的视频&#xff0c;可以采取获取视频链接再导入的方法&#xff0c;这样会更高效美观。 摘要和多个图文信息的重叠 新建图文信息&#xff0c;在设置封面旁边有图文摘要&#xff0c;图文摘要会在发送出去的界面旁边有显…

页面模板

找了半天的公众号模板&#xff0c;有点坑&#xff0c;微信公众号更新太快了&#xff0c;几个月不看都找不到使用功能了。 页面模板位置 页面模板在现在的话题专辑&#xff0c;如图: 在页面排版中可以实现我一直想要的菜单整理化功能 可以将文章整理后&#xff0c;发布在菜单…

查找工具locate和find

在工作中我们总是会去查找一些我们需要的内容&#xff0c;然而往往这些东西总是会被大量的数据隐藏。这个时候我们就需要一些查找工具来帮我们处理这些数据帮我们快速的找到我们需要的数据&#xff0c;在我们运维人员的工作过程中我们更须要他来帮我们快速的解决问题。那么今天…