mysql中LIKE和REGEXP都可以用来字符匹配

正则表达式REGEXP是为复杂搜索指定模式的强大方式。

  • like用法

 

LIKE一般与通配符(%)和(_)两个使用

如例

SELECT prod_id,prod_name
FROM products
WHERE prod_name LIKE ' %on_';

其中%可以匹配任意长度任意字符,也可长度为0,即没有字符

其中_只能匹配长度为一的单一字符,若原代码中为'%on__' 即可以匹配长度为二的任意字符

若要匹配字符串中有%和_的字符串,则需要用到关键字escape:

使用escape,转义字符后面的%或_就不作为通配符了,注意前面没有转义字符的%和_仍然起通配符作用

如例

SELECT  s_name,s_address
FROM students
WHERE s_name LIKE '%TOM/_%' ESCAPE '/';

其中字符‘/’为转义字符,可以将其后面的一个通配符失效,变成被匹配的字符。

例中即匹配名字中含‘TOM_’ 的学生数据。

  • REGEXP用法

REGEXP语法位置与LIKE相同

如例

SELECT prod_name
FROM products
WHERE prod_name REGEXP '';

此段代码即可匹配到prod_name中所有含有1000的行。

LIKE和REGEXP一个重大区别就是:LIKE匹配整个列,而REGEXP在列值内进行匹配。

如果匹配的文本在列值中出现,LIKE将不会检索出结果。

所以在上例中REGEXP可以匹配到列种含有1000的行,若用LIKE语句则要写成 LIKE ‘%1000%’

REGEXP中的.:

表示匹配任一单一字符

SELECT prod_name
FROM products
WHERE pro_price REGEXP '.000'
ORDER BY prod_name;

上例可以将商品价格为几千的商品名列出

regexp中的OR: |

可以搜索多个串之一

SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000|2000'
ORDER BY prod_name;

上例中即匹配字符1000或2000

REGEXP中的[] :

匹配[]符号中几个字符之一

SELECT prod_name
FROM products
WHERE prod_weight REGEXP '[123]KG'
ORDER BY prod_name;

上例中即可匹字符1KG,2KG,3KG

可以用[1-5],[a-d]来表示范围

其中可以用^符号否定来表示匹配除这些字符以外的所有字符,如:[^123] 匹配除了字符1,2,3外的所有字符

[]还可以匹配字符类:

[:alnum:] 任意字母和数字(同[a-zA-Z0-9)

[:alpha:] 任意字母 (同[a-zA-Z])

[:blank:] 空格和制表(同[\\t])

[:cntrl:] ASCII控制字符(ascll 0到37和127)

[:digit:] 任意数字 (同[0-9])

[:graph:] 与[:print:]相同,但不包括空格

[:lower:] 任意小写字母

[:print:] 任意可打印字符

[:punct:] 即不在[:alnum:]也不在[:cntrl:]的字符

[:space:] 包括空格在内的任意空白字符(同[\\f\\n\\r\\t\\v])

[:upper:] 任意大写字母

[:xdigit:] 任意十六进制数字(同[a-fA-F0-9)

 

REGEXP中的转义字符 \\  :

\\可以使下一个特殊字符失效,如(\\.  \\-  \\\  \\[  \\])

SELECT vned_name
FROM vendors
WHERE vend_name REGEXP '\\.'
ORDER BY vend_name;

上例匹配字符.

\\也可用来引用元字符:

\\f  换页  \\n  换行  \\r回车  \\t制表  \\纵向制表

mysql中LIKE和REGEXP的更多相关文章

  1. MySQL中REGEXP正则表达式使用大全

    REGEXP在mysql是用来执行正则表达式的一个函数 像php中的preg之类的函数了,regexp正则函数如果只是简单的查询使用like即可,但复杂的还是需要使用regexp了,下面我们来看看. ...

  2. mysql中正则表达式的使用

    mysql中正则表达式的性能要高于like,所以这里总结一下正则表达式的使用. 正则表达式的模式及其含义: 下面举例说明其用法: 建表student: create table student(id ...

  3. mysql中的模糊查询

    转载自:http://www.letuknowit.com/archives/90/ MySQL中实现模糊查询有2种方式:一是用LIKE/NOT LIKE,二是用REGEXP/NOT REGEXP(或 ...

  4. MySQL中的字符串函数

    使用字符串数据 当使用字符串数据时,可以使用下面的字符数据类型. CHAR 固定长度.不足部分使用空格填充的字符串. varchar 变长字符串. text(MySQL和SQL Server)或CLO ...

  5. mysql中replace替换字符串更改方法

    MySQL中update替换部分字符串replace的简单用法 近日,遇到了需要将部分字符串替换为另外的字符,平时用的最多的是直接update整个字段值,在这种情况下效率比较低,而且容易出错.其实my ...

  6. MySQL中的运算符和时间运算

    一.MySQL中运算符的分类 算术运算符,比较运算符,逻辑运算符,按位运算符 二.算数运算符 符号                            作用 + 加法   - 减法   * 乘法   ...

  7. MySQL中正则表达式

    正则表达式是用来匹配文本的特殊的串(字符集合),将一个模式(正则表达式)与一个文本串进行比较 从文本文件中提取电话号码 查找名字中间带有数字的文件 文本块中重复出现的单词 替换页面的URL为这些URL ...

  8. 4.Mysql中的运算符

    4.Mysql中的运算符运算符用来连接表达式.运算符包括:算术运算符.比较运算符.逻辑运算符.位运算符. 4.1 算术运算符算术运算符包括加(+).减(-).乘(*).除(/).取模(%,MOD) 5 ...

  9. MySQL学习笔记:regexp正则表达式

    在MySQL中,模糊搜索的时候主要用两种方式: 1.like2.regexp + 正则表达式 性能优于like 正则表达式描述了一组字符串. 最简单的正则表达式是不含任何特殊字符的正则表达式.例如,正 ...

随机推荐

  1. JUC——并发集合类

    如果要进行多个数据的保存,无疑首选类集(List.Set.Queue.Map),在类集的学习的时候也知道一个概念:许多集合的子类都具有同步与异步的差别,但是如果真的要在多线程之中去使用这些类,是否真的 ...

  2. Netty源码分析第5章(ByteBuf)---->第5节: directArena分配缓冲区概述

    Netty源码分析第五章: ByteBuf 第五节: directArena分配缓冲区概述 上一小节简单分析了PooledByteBufAllocator中, 线程局部缓存和arean的相关逻辑, 这 ...

  3. ABP.ModuleZero.Feature——特性管理

    原文地址:http://aspnetboilerplate.com/Pages/Documents/Feature-Management  (在翻译原文的基础上增补更多细节说明) 简介 在大多数SAA ...

  4. SQL-Server collation, what is it and how to change db/column collation

    The thing about collations is that although database have it's own collation, every table, and every ...

  5. [leetcode-897-Increasing Order Search Tree]

    Given a tree, rearrange the tree in in-order so that the leftmost node in the tree is now the root o ...

  6. Last Daily Scrum (2015/11/9)

    今晚我们终于完成了新版本的爬虫工作,可以替换掉之前部署在服务器上的那个爬虫了.由于周末大家各种原因导致了我们迭代一的截止日没有完成所有任务,所以今天晚上大家加班加点终于把这一迭代的爬虫项目完成了. 成 ...

  7. Linux环境下服务器环境搭建-mysql

    下载对应版本的mysql.rpm(Linux 6 安装el6 Linux 7 安装el7) 安装环境 centos 7,安装版本mysql57-community-release-el7-9.noar ...

  8. 《校友聊—方便使用之NABCD》

    <校友聊—方便使用之NABCD> 方便使用特点的分析与总结: N:由于一些软件的人机交互性很差,人性化性能低,使用不方便,故,鉴于此需求:A:用户可根据系统界面的友好提示一步步进行:B:提 ...

  9. java实现中值滤波均值滤波拉普拉斯滤波

    目录 来对下面的图像滤波,其实就是对各个像素点进行数学运算的过程 均值滤波 中值滤波 拉普拉斯滤波 Sobel滤波 注意 来对下面的图像滤波,其实就是对各个像素点进行数学运算的过程 均值滤波 均值滤波 ...

  10. 《TCP/IP 详解 卷1:协议》第 8 章:Internet 控制报文协议

    路由器是 Internet 的重要组成部分,严密监视 Internet 的操作.IP 协议未给发送失败的 IP 数据包提供一种错误处理,也没有给端系统提供直接的方法来发现错误.为了解决这一不足之处,I ...