当前位置: 首页 > 编程笔记 >

MYSQL使用正则表达式过滤数据

孔山
2023-03-14
本文向大家介绍MYSQL使用正则表达式过滤数据,包括了MYSQL使用正则表达式过滤数据的使用技巧和注意事项,需要的朋友参考一下

一、正则与LIKE的区别
 Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符、字符串。
例如:select * from wp_posts where post_name REGEXP'hello',可以检索出列post_name中所有包含hello的行

REGEXP'.og' .是正则表达式中里一个特殊的字符。它表示匹配一个字符,因此,dog,hog,mog等等都能匹配。

注意:

关于LIKE和REGEXP的区别:LIKE匹配整个列。如果被匹配的文本仅在列值中出现,LIKE并不会找到它,相应的行也不会返回(当然,使用通配符除外)。而REGEXP在列值内进行匹配,如果被匹配的匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回,这时一个非常重要的差别(当然,如果适应定位符号^和$,可以实现REGEXP匹配整个列而不是列的子集)。

关于大小写的区分:MySQL中正则表达式匹配(从版本3.23.4后)不区分大小写。如果要区分大小写,应该使用BINARY关键字,如where post_name REGEXP BINARY 'Hello.000'

二、基本字符匹配
检索列prod_name 包含文本1000的所有行:

进行OR匹配
相当于:或操作 “|”

匹配几个字符之一
只想匹配特定的字符。 可以通过指定一组用[和]括起来的字符来完成。

[456]定义了一组字符,他的意思是匹配4或5或6. []是另一种形式的OR语句。[456]是[4|5|6]的缩写。匹配范围
[1-3] a-z都是合法的范围

匹配特殊字符

正则表达式语言由特殊含义的特殊字符构成。

. 在正则表达式中表示匹配任何一个字符

比如匹配prod_name中包括on字符串的行:

那如何匹配.,[],|,-?

为了匹配特殊字符,必须用\\为前导。 比如\\.表示查找·

匹配字符类

匹配多个实例

再比如 匹配连在一起的4位数字

sticks? : s后的?使s可选,因为?匹配它前面紧跟的任何字符的0次或者1次出现。

[:digit:]匹配任意数字,因而它为数字的一个集合。{4}确切地要求它前面的字符出现4次。
所以[:digit:]{4}匹配连在一起的任意4位数字。

三、定位符
目前为止所有例子都是匹配一个串中任意为止的文本。为了匹配特定为止的文本,需要使用定位符。

也可以在不使用数据库的情况下测试正则表达式的正确性:

SELECT 来测试正则表达式,REGEXP检查总是返回0或1,

SELECT  'HELLO‘  REGEXP '0‘//返回为0

以上就是本文的全部内容,希望对大家的学习有所帮助。

 类似资料:
  • 问题内容: 我正在尝试过滤包含一堆URL的数组。我需要返回仅包含“联系人”一词的网址。 例如,有一个链接 这应该从过滤器中返回。 我尝试了这个: 当我知道有一个包含“联系人”一词的域时,它目前仅通过所有域发送回false。 问题答案: 首先,它等于哪里是退格字符(ASCII 08)…显然不是您想要的 所以,你会做的-这相当于 但是,之后是多余的 所以…到 在这里使用被滥用。以下是说明 下一个问题是

  • 问题内容: 我在为ElasticSearch Regexp Filter正确表达正则表达式时遇到问题。我正在尝试匹配url字段中“ info-for / media”中的任何内容,例如http://mydomain.co.uk/info-for/media/press- release-1 。为了尝试正确使用我现在使用的正则表达式,但这最终将与用户的查询字符串一起使用。 POST到localhos

  • 问题内容: 我想在Java中构建一个正则表达式,该正则表达式将在FilenameFilter中传递以过滤目录中的文件。 问题是我无法理解正则表达式“思维模型”的问题:) 这是我用来选择要排除的文件的正则表达式 (((ABC | XYZ))+ \ w * Test.xml 我想做的是选择所有以Test.xml结尾但不以ABC或XYZ开头的文件。 您能否添加任何可以帮助我应对正则表达式的资源。 谢谢

  • 问题内容: 我的代码如下所示: 它返回一个列表,其中仅包含与匹配的条目。我想知道是否有一个内置的功能,类似于: 问题答案: 除了Konstantin的回答:Java 8 通过对该类添加了支持,该类在内部调用: 太棒了!

  • 问题内容: 我正在尝试使用匹配其id属性的正则表达式过滤html表。我究竟做错了什么?我正在尝试实现的代码: 我得到的错误:preg_match期望第二个参数是一个字符串,给定数组。 问题答案: 根据DOM(具有命名空间等),属性仍然是一个复杂的元素。采用: 现在,我们需要一个布尔值返回,所以: 顺便说一句:对于更复杂的问题,您当然可以偷偷检查一下这是怎么回事: 很遗憾,我们没有可用的XPATH

  • 行动时刻 - 使用正则表达式 Unlang允许在条件检查中进行正则表达式计算。这些通常是Posix正则表达式。运算符=〜和!〜与正则表达式相关联。为了简单的概念证明,我们将修改上一个练习: 1.编辑FreeRADIUS配置目录下的sites-available / default虚拟服务器,并在该部分顶部的post-auth部分中添加以下内容: if(request:Framed-Protocol