精华内容
下载资源
问答
  • Regexp关键字告诉MySQL后面所跟的东西作为正则表达式处理。以下使用student、courses、classes表查询student表image.pngcourses表image.pngclasses表image.png查询s_name 中有有 ‘王’字的姓名...

    正则表达式用来匹配文本的特殊的串(字符集合)。正则表达式用正则表达式语言来建立,正则表达式语言是用来完成匹配特殊的串的一种特殊语言。

    Regexp关键字告诉MySQL后面所跟的东西作为正则表达式处理。

    以下使用student、courses、classes表查询

    student表

    764e2a9998a7

    image.png

    courses表

    764e2a9998a7

    image.png

    classes表

    764e2a9998a7

    image.png

    查询s_name 中有有 ‘王’字的姓名(与like关键字类似)

    select s_no,s_sex,s_name from student where s_name REGEXP BINARY '王' order by s_name;

    764e2a9998a7

    image.png

    查询coursesname中包含H的名字,不区分大小写

    select * from courses s where s.coursesname REGEXP 'H' order by s.coursesname;

    764e2a9998a7

    image.png

    利用关键字REGEXP BINARY 关键字,可以进行大小写区分。

    select * from courses s where s.coursesname REGEXP BINARY 'h' order by s.coursesname;

    764e2a9998a7

    image.png

    Regexp 进行OR匹配

    ‘|’ 表示OR操作符,它表示匹配其中之一,因此H和J都匹配并返回

    多个OR条件,可以利用单个正则表达式进行匹配。

    select * from courses s where s.coursesname REGEXP 'H|J' order by s.coursesname;

    764e2a9998a7

    image.png

    Regexp 进行特定字符匹配

    Regexp 匹配几个字符之一,利用 [] 表示、另一种形式的OR

    王[丽|红|艳] == 王丽 或者王红 或者王艳 为 王[丽|红|艳] 的缩写

    select s_no,s_sex,s_name from student where s_name REGEXP '王[丽|芳]' order by s_name;

    764e2a9998a7

    image.png

    也可以不带括号:

    select s_no,s_sex,s_name from student where s_name REGEXP '王|丽|芳' order by s_name;

    764e2a9998a7

    image.png

    Regexp 进行范围匹配

    [0-9] 0到9数字匹配

    [a-z] a到z字母匹配

    select * from classes s where s.classname REGEXP 'p[A-Z]' order by s.classname;

    764e2a9998a7

    image.png

    select * from classes s where s.classname REGEXP 'py[0-9]' order by s.classname;

    764e2a9998a7

    image.png

    Regexp 进行特殊字符匹配

    特殊字符匹配,多数的正则表达式实现是使用单个的反斜杠进行转义特殊字符

    select * from classes s where s.classname REGEXP '\\.' order by s.classname;

    764e2a9998a7

    image.png

    匹配连在一起的3位数字

    select * from classes s where s.classname REGEXP '[[:digit:]]{3}' order by s.classname;

    select * from classes s where s.classname REGEXP '[0-9]{3}' order by s.classname;

    764e2a9998a7

    image.png

    ^匹配字符串的开始位置

    select * from classes s where s.classname REGEXP '^p' order by s.classname;

    764e2a9998a7

    image.png

    $ 匹配字符串的结束位置

    select * from classes s where s.classname REGEXP '#$' order by s.classname;

    764e2a9998a7

    image.png

    $ 匹配字符串最后三个字符是数字

    select * from classes s where s.classname REGEXP '[0-9]{3,}$' order by s.classname;

    764e2a9998a7

    image.png

    ^ 与 $ 的结合使用

    查询以p开头1结尾中间有两个任意字符的记录

    select * from classes s where s.classname REGEXP '^p..1$' order by s.classname;

    764e2a9998a7

    image.png

    展开全文
  • 文章目录MySQL 正则表达式,MYSQL 通过正则表达式进行匹配查询1、如何使用,语法2、regexp 模式3、几个demo MySQL 正则表达式,MYSQL 通过正则表达式进行匹配查询 1、如何使用,语法 select * from 表名 where 字段...

    MySQL 正则表达式,MYSQL 通过正则表达式进行匹配查询


    1、如何使用,语法

    select * from 表名 where 字段名称 regexp '正则表达式' 
    

    2、regexp 模式

    模式 说明
    ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置。
    $ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置。
    . 匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
    […] 字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’。
    [^…] 负值字符集合。匹配未包含的任意字符。例如, ‘[^abc]’ 可以匹配 “plain” 中的’p’。
    在这里插入图片描述 匹配 p1 或 p2 或 p3。例如,'z
    * 匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。
    + 匹配前面的子表达式一次或多次。例如,‘zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
    {n} n 是一个非负整数。匹配确定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
    {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

    3、几个demo

    1、查找name字段中以’st’为开头的所有数据:

    SELECT name FROM person_tbl WHERE name REGEXP '^st';
    

    2、查找name字段中以’ok’为结尾的所有数据:

    SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
    

    3、查找name字段中包含’mar’字符串的所有数据:

    SELECT name FROM person_tbl WHERE name REGEXP 'mar';
    

    4、查找name字段中以元音字符开头或以’ok’字符串结尾的所有数据:

    SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
    
    展开全文
  • MySql正则表达式

    2018-05-17 23:59:34
    MySql正则表达式

        表达式和函数

            expr REGEXP pat:如果字符串expr能够匹配指定的正则表达式pat,则返回1,否则返回0。
            expr NOT REGEXP pat:相当于 NOT (expr REGEXP pat)。
            REGEXP_INSTR(expr, pat[, pos[, occurrence[, return_option[, match_type]]]]):返回与模式pat指定的正则表达式相匹配的字符串在expr中起始索引,如果没有匹配的话返回0。如果expr或pat为null,则返回null。注意索引从1开始。
            pos:在expr中开始搜索的起始索引,默认为1。
            occurrence:第几个匹配项,默认为1。
            return_option:返回哪一种类型的位置。如果是0,返回匹配的子字符串的第一个字符的位置,如果是1,返回匹配的子字符串后面的位置。默认为0。
            match_type:字符串匹配模式。可选值为c:区分大小写匹配,i:不区分大小写匹配,m:多行模式,将字符串看作是多行输入,开始和结束标记为人一行的开始和结束,而不是整个字符串的开始和结束。n:单行模式,将字符串看作是单行输入,“.”匹配任意字符包括换行符。u:只使用unix行结束符,只有换行符才会被“.”、“^”和“$”操作符匹配。这些值可同时出现多个,如果出现了矛盾的选项,那么最右边的字符优先级最高。
            REGEXP_LIKE(expr, pat[, match_type]):返回与模式pat指定的正则表达式相匹配的字符串在expr中起始索引,如果没有匹配的话返回0。如果expr或pat为null,则返回null。索引从1开始。模式可以是一个可扩展的正则表达式。也可以是字符串表达式或者表中的列。
            match_type:字符串匹配模式。见 REGEXP_INSTR()。
            REGEXP_REPLACE(expr, pat, repl[, pos[, occurrence[, match_type]]]):将expr字符串中匹配模式pat指定的正则表达式的匹配项替换为repl并返回替换后的字符串。如果expr、pat、repl为null,则返回null。
            pos:在expr中开始搜索的起始索引,默认为1。
            occurrence:替换第几个匹配项,默认为0,表示替换所有匹配项。
            match_type:字符串匹配模式。见 REGEXP_INSTR()。
            REGEXP_SUBSTR(expr, pat[, pos[, occurrence[, match_type]]]):返回expr中与模式pat指定的正则表达式匹配的字符串,如果没有匹配项或者expr、pat为null时返回null。
            pos:在expr中开始搜索的起始索引,默认为1。
            occurrence:第几个匹配项,默认为1。
            match_type:字符串匹配模式。见 REGEXP_INSTR()。

    表达式语法

            正则表达式用于描述一组字符串,常用的符号及组合如下:
                    ^:在正则表达式的首位表示字符串的开头。如^foo表示以foo开头的字符串。
                    $:表示字符串的即为。如foo$表示以foo结尾的字符串。
                    .:表示任意字符,包括换行和回车(多行模式)。
                    *:表示其前面的字符出现0到多次。如fo*可以匹配f、fo、foooo等。
                   +:表示其前面的字符至少出现一次。如fo+可以匹配fo、foo、fooooo等。
                    ?:表示其前面的字符出现0到1次。如fo?可以匹配f或fo。
                    |:表示出现其中的一个。如foo|boo,表示可以匹配foo或boo。
                    ():表示()中的部分做为一个整体。如果(foo|boo)a可以匹配fooa或booa。
                    {}:表示可能出现的次数,如a{3}只出现三次,a{2,}表示a至少出现2次,a{2,5}表示a出现2到5次。
                    []:表示可以匹配其中的任何一个字符,如果[]中的首个字符是^,则匹配不在[]中的字符。
                    [..]:表示一个字符名称,完整的字符名称列表在regexp/cname.h中。
                    [[:<:]], [[:>:]]:表示词边界,分别表示词的开始和结束。词是一系列字字符,其前面和后面均没有字字符,字字符是字母数字下划线等。
                    [=character_class=]:表示一个等价类,用于匹配所有具有相同排序值的字符。
                    [:character_class:]:表示一个字符类,匹配所有属于此类的字符。字符类不能用做范围的端点。使用时要再其外面再加一层[]。常见的字符类有:
                            alnum     任意字母和数字(同[a-zA-Z0-9])
                            alpha     任意字母(同[a-zA-Z])
                            blank     空格和制表符(同[\\t])
                            cntrl     ASCII控制字符(ASCII0到31和127)
                            digit     任意数字(同[0-9])
                            graph    图形符号
                            lower     任意小写字母(同[a-z])
                            print     图形符号或空格
                            punct     标点符号,既不在[[:alnum:]]中又不在[[:cntrl:]]中的字符
                            space     空格、制表、换行、回车([\\f\\n\\r\\t\\v])
                            upper     任意大写字母(同[A-Z])
                            xdigit     任意16进制数字(同[a-fA-F0-9])
            mysql中字符串使用了C转义语法,所以如果需要在expr和pat中使用“\”时,需要写成“\\”。如果要匹配字符串中的括号等字符时,需要使用“\\”对其进行转义。

    简单示例

    SELECT 'f' REGEXP '^fo*$','fo' REGEXP '^fo*$','foooo' REGEXP '^fo*$';
    SELECT 'f' REGEXP '^fo+$','fo' REGEXP '^fo+$','foooo' REGEXP '^fo+$';
    SELECT 'f' REGEXP '^fo?$','fo' REGEXP '^fo?$','foooo' REGEXP '^fo?$';
    SELECT 'afoob' REGEXP '^a(foo|boo)b','aboob' REGEXP '^a(foo|boo)b';
    SELECT 'fo' REGEXP '^(fo){2}$','fofo' REGEXP '^(fo){2}$','fofofo' REGEXP '^(fo){2}$';
    SELECT 'fo' REGEXP '^(fo){1,2}$','fofo' REGEXP '^(fo){1,2}$','fofofo' REGEXP '^(fo){1,2}$';
    SELECT 'fo' REGEXP '^(fo){1,}$','fofo' REGEXP '^(fo){1,}$','fofofo' REGEXP '^(fo){1,}$';
    SELECT 'HelloRegex' REGEXP '^[[:alpha:]]*$';
    SELECT 'Hello\nRegex' REGEXP '(?m)^[[:alpha:]]*$';
    SELECT '12(23)' REGEXP '[0-9]*\\(23\\)$','12(23)' REGEXP '[0-9]*(23)$';
    SELECT 'this is word test' REGEXP '[[:<:]]word[[:>:]]','this is word test' REGEXP '[[:<:]]word[[:>:]]','this is xword test' REGEXP '[[:<:]]word[[:>:]]';
    SELECT 'this is word test' REGEXP '[[:<:]]word','this is wordx test' REGEXP '[[:<:]]word','this is xword test' REGEXP '[[:<:]]word';
    SELECT 'this is word test' REGEXP 'word[[:>:]]','this is wordx test' REGEXP 'word[[:>:]]','this is xword test' REGEXP 'word[[:>:]]';
    SELECT '~' REGEXP '[[.tilde.]]','|' REGEXP '[[.vertical-line.]]'; 

    展开全文
  • MySQL 正则表达式

    千次阅读 2018-04-27 11:57:34
    MySQL 正则表达式 MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。 如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL正则表达式匹配与这些脚本的类似。 下表...

    MySQL 正则表达式
    MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。
    如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL的正则表达式匹配与这些脚本的类似。
    下表中的正则模式可应用于 REGEXP 操作符中。
    模式 描述

    ^   匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n''\r' 之后的位置。
    $	匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n''\r' 之前的位置。
    .   匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
    [...]   字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
    [^...]  负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
    p1|p2|p3    匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z""food"'(z|f)ood' 则匹配 "zood""food"。
    *   匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
    +   匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
    {n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
    {n,m}   m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

    实例
    了解以上的正则需求后,我们就可以根据自己的需求来编写带有正则表达式的SQL语句。以下我们将列出几个小实例(表名:person_tbl )来加深我们的理解:
    查找name字段中以’st’为开头的所有数据:

    mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';

    查找name字段中以’ok’为结尾的所有数据:

    mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

    查找name字段中包含’mar’字符串的所有数据:

    mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

    查找name字段中以元音字符开头或以’ok’字符串结尾的所有数据:

    mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
    展开全文
  • mysql 正则表达式

    2018-08-01 17:51:48
    MySQL 正则表达式 在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配。 MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。 如果您了解PHP或Perl,...
  • MySQL正则表达式查询

    2019-07-28 17:14:43
    MySQL正则表达式查询 Mysql中的查询模糊查询可以使用like,但是like关键字依旧缺乏灵活性,对于需要更加灵活的查询可以使用正则表达式。 create table fruit ( name varchar(25) not null) engine=...
  • 一般应该用不到,只适用于数据量比较小的项目,数据理量大的话太耗时了 https://www.runoob.com/mysql/mysql-regexp.html SELECT tags FROM asset WHERE tags REGEXP '头,|头$';
  • mysql 正则

    2018-09-04 09:55:00
    MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。 如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL正则表达式匹配与这些脚本的类似。 下表中的正则模式可应用...
  • mysql正则表达式

    2020-04-15 15:05:08
    MySQL可以通过 LIKE …% 来进行...查找name字段中以'st'为开头的所有数据: mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st'; 查找name字段中以'ok'为结尾的所有数据: mysql> SELECT name ...
  • MySQL正则表达式

    2020-07-23 19:33:27
    我们通过MySQL中 REGEXP 操作符来进行正则表达式查询。 1.^:匹配开始符,开头符号, SELECT * FROM table WHERE name REGEXP '^a'; //查询table表中,name字段,所有a开头的值。 2.$:匹配结尾符,结尾符号, ...
  • MYSQL正则表达式

    2020-06-08 20:32:27
    MYSQL正则表达式 MYSQL的正则表达式REGEXP默认是模糊匹配,即包含的就算匹配成功,可以使用定位符进行精准匹配。 LIKE匹配默认是精准匹配,可以使用通配符进行模糊匹配。 regexp 'abc' 不区分大小写 regexp binary '...
  • ylbtech-DB-MySQLMySQL 正则表达式 1.返回顶部 1、 MySQL 正则表达式 在前面的章节我们已经了解到MySQL可以通过LIKE ...%来进行模糊匹配。 MySQL 同样也支持其他正则表达式的匹配, ...
  • MySQL 正则表达式

    2018-06-30 11:20:10
    MySQL 正则表达式在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配。(菜鸟联盟转载)MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。 如果您了解PHP或...
  • MySQL正则表达式及常用函数 一、正则表达式 正则表达式(Regular Expression)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。 MySQL有哪些正则表达式? 正则表达式如何使用在SQL中? 示例...
  • 本文实例总结了MySQL使用正则表达式进行查询操作。分享给大家供大家参考,具体如下:字符“^”匹配特定字符SELECT * FROM fruits WHERE f_name REGEXP '^b';字符'$‘特定字符结尾SELECT * FROM fruits WHERE f_name ...
  • Mysql正则

    2019-09-24 11:00:14
    摘自:http://www.runoob.com/mysql/mysql-regexp.html 模式描述 ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。 $ 匹配输入字符串的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,673
精华内容 5,069
关键字:

mysql正则开头结尾

mysql 订阅