MySQL 正则表达式搜索

products表如下:

1. 基本字符匹配

使用正则表达式与LIKE的区别,正则表达式是在整个列搜索,只要prod_name中包含了所搜索的字符就可以了,而LIKE如果不用通配符,那么要求prod_name与搜索的字符要完全匹配:也就是说下面的例子,需要使用 LIKE ‘JetPack 1000‘才可以适配搜索到。

2 使用or进行匹配搜索,可以搜索两个条件,也可以连接多个条件:

3 匹配几个字符之一://这个的意思是说,匹配1 Ton 或者 2 Ton 或者 3 Ton

但是如果写成下面这样又是不对的://这个得意思是匹配1 或者 2 或者 3 Ton的列

4 范围匹配,[1-5] 其实是 [12345]的简写,此外 [0-9],[3-9]都是合法的。

5 匹配特殊字符,匹配特殊字符需要使用\\

6 匹配多个实例

重复元素字符:

元字符 说明
* 0个或多个匹配
+ 1个或多个匹配
0个或1个匹配
{n} 指定数目的匹配
{n,} 不少于指定数目的匹配
{n,m} 匹配数目的范围

下面搜索条件的意思是 首先要有一个右括号,接着应该有一个数字,然后是一个空格,再然后是sticks,最后是0个或1个左括号,问号的意思如上表所示

7 字符种类 为了方便工作,可以使用预先定义的字符集,字符集如下:

说明
[:alpha:] 任意字符
[:blank:] 空格和制表符
[:cntrl:] ASCII控制字符(从ASCII0到31和127)
[:digit:] 任意数字同 [0-9]
[:graph:] 任意可打印字符,但不包括空格
[:lower:] 任意小写字母
[:print:] 任意可打印字符
[:punct:] 即不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:] 包括空格在内的任意空白字符
[:upper:] 任意大写字母
[:alnum:] 任意字母和数字

接下来从表中搜索prod_name中 有连续4个数字的名字:其中[:digit:]表示任意的数字,{4}表示这个数字需要出现4次:

8 定位符在特定的位置搜索

元字符 说明
^ 文本开始
$ 文本的结尾
[[:<:]] 词的开始
[[:>:]] 词的结尾

下面的语句时查找以数字或者 .  开头的prod_name

MySQL 正则表达式搜索

时间: 2024-10-08 03:14:22

MySQL 正则表达式搜索的相关文章

【转】MYSQL入门学习之二:使用正则表达式搜索

转载地址:http://www.2cto.com/database/201212/173869.html 一.正则表达式介绍 www.2cto.com 正则表达式是用来匹配文本的特殊的串(字符集合). 二.使用MySQL正则表达式 1.MySQL仅仅支持多数正则表达式实现的一个很小的子集. 2.LIKE匹配整个列值:而REGEXP匹配列值的子串,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回.看下面的例子: www.2cto.com [sql] mysql>select

mysql 文本搜索

全文本搜索 MySQL支持几种基本的数据库引擎,但并非所有的引擎都支持全文本搜索.两个最常使用的引擎为MyISAM和InnoDB,前者支持全文本搜索,后者就不支持. 理解全文本搜索 在前面的学习中,我们都知道有两种方式来匹配文本.一种是使用like关键字来进行匹配,另外一种就是使用正则表达式来进行匹配. 虽然使用正则表达式就可以编写查找所需行的足够复杂的匹配模式.但是,这些存在几个重要的限制影响: 1.性能:通配符和正则表达式时尝试匹配表中所有行,而这些搜索极少使用了表索引,因此,相当慢 2.明

mysql正则表达式及应用

mysql where子句的模式匹配 今天在应用中遇到了这样的一个问题,有一个字段 t1,其中的值类似于:1,1,1,2,3,3,4,4,5,5,2,4,3,2,1,2 需要从里面搜索出比如说:第一个逗号前的数字范围为3-5之间,第三个逗号前的数字的范围为3-5之间,第10个逗号前的数字范围为3-5之间,其余的都为1-5之间... 则sql语句可以这么写: SELECT * FROM tb WHERE t1 REGEXP '^[3-5],[1-5],[3-5],[1-5],[1-5],[1-5]

MySQL 全文搜索支持, mysql 5.6.4支持Innodb的全文检索和类memcache的nosql支持

背景:搞个个人博客的全文搜索得用like啥的,现在mysql版本号已经大于5.6.4了也就支持了innodb的全文搜索了,刚查了下目前版本号都到MySQL Community Server 5.6.19 了,所以,一些小的应用可以用它做全文搜索了,像sphinx和Lucene这样偏重的.需要配置或开发的,节省了成本. 这儿有一个原创的Mysql全文搜索的文章, mysql的全文搜索功能:http://blog.csdn.net/bravekingzhang/article/details/672

【转】 Mysql全文搜索match...against的用法

原文链接 http://blog.csdn.net/manbujingxin/article/details/6656992 前提:mysql只支持英文内容的全文索引,所以只考虑英文的全文搜索. 假定数据表名为post,有三列:id.title.content.id是自增长序号, title是varchar,content是text,给content添加全文索引.mysql全文搜索有三种模式:一.自然语言查找.这是mysql默认的全文搜索方式,sql示例: 1 select  id,title 

Mysql全文搜索match against的用法

全文检索在 MySQL 中就是一个 FULLTEXT 类型索引.FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR. VARCHAR 或 TEXT 列上创建 对于大的数据库,将数据装载到一个没有 FULLTEXT 索引的表中,然后再使用 ALTER TABLE   (或 CREATE INDEX) 创建索引,这将是非常快的.将数据装载到一个已经有 FULLTEXT 索引的表中,将是非常慢

mysql 全文搜索(转载http://blog.csdn.net/manbujingxin/article/details/6656992)

前提:mysql只支持英文内容的全文索引,所以只考虑英文的全文搜索.假定数据表名为post,有三列:id.title.content.id是自增长序号,title是varchar,content是text,给content添加全文索引. mysql全文搜索有三种模式: 一.自然语言查找.这是mysql默认的全文搜索方式,sql示例: 1 select  id,title FROM post WHERE MATCH(content) AGAINST ('search keyword') 或者显式声

MySQL 全文搜索支持

MySQL 全文搜索支持 从MySQL 4.0以上 myisam引擎就支持了full text search 全文搜索,在一般的小网站或者blog上可以使用这个特性支持搜索. 那么怎么使用了,简单看看: 1.创建一个表,指定支持fulltext的列 CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT (title,b

DB-MySQL:MySQL 正则表达式

ylbtech-DB-MySQL:MySQL 正则表达式 1.返回顶部 1. MySQL 正则表达式 在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配. 如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL的正则表达式匹配与这些脚本的类似. 下表中的正则模式可应用于 REGEXP 操作符中. 模式 描述 ^ 匹配输入字符串的开始位置.如果设置了