mysql中LIKE和REGEXP
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的更多相关文章
- MySQL中REGEXP正则表达式使用大全
REGEXP在mysql是用来执行正则表达式的一个函数 像php中的preg之类的函数了,regexp正则函数如果只是简单的查询使用like即可,但复杂的还是需要使用regexp了,下面我们来看看. ...
- mysql中正则表达式的使用
mysql中正则表达式的性能要高于like,所以这里总结一下正则表达式的使用. 正则表达式的模式及其含义: 下面举例说明其用法: 建表student: create table student(id ...
- mysql中的模糊查询
转载自:http://www.letuknowit.com/archives/90/ MySQL中实现模糊查询有2种方式:一是用LIKE/NOT LIKE,二是用REGEXP/NOT REGEXP(或 ...
- MySQL中的字符串函数
使用字符串数据 当使用字符串数据时,可以使用下面的字符数据类型. CHAR 固定长度.不足部分使用空格填充的字符串. varchar 变长字符串. text(MySQL和SQL Server)或CLO ...
- mysql中replace替换字符串更改方法
MySQL中update替换部分字符串replace的简单用法 近日,遇到了需要将部分字符串替换为另外的字符,平时用的最多的是直接update整个字段值,在这种情况下效率比较低,而且容易出错.其实my ...
- MySQL中的运算符和时间运算
一.MySQL中运算符的分类 算术运算符,比较运算符,逻辑运算符,按位运算符 二.算数运算符 符号 作用 + 加法 - 减法 * 乘法 ...
- MySQL中正则表达式
正则表达式是用来匹配文本的特殊的串(字符集合),将一个模式(正则表达式)与一个文本串进行比较 从文本文件中提取电话号码 查找名字中间带有数字的文件 文本块中重复出现的单词 替换页面的URL为这些URL ...
- 4.Mysql中的运算符
4.Mysql中的运算符运算符用来连接表达式.运算符包括:算术运算符.比较运算符.逻辑运算符.位运算符. 4.1 算术运算符算术运算符包括加(+).减(-).乘(*).除(/).取模(%,MOD) 5 ...
- MySQL学习笔记:regexp正则表达式
在MySQL中,模糊搜索的时候主要用两种方式: 1.like2.regexp + 正则表达式 性能优于like 正则表达式描述了一组字符串. 最简单的正则表达式是不含任何特殊字符的正则表达式.例如,正 ...
随机推荐
- python002
1.万恶的”+“号字符串拼接 字符串中的连接符+”会开辟一个新的空间,多一个“+“就会多开辟一个空间,影响性能 2.字符串格式化 ”%S“ :字符类型 ”%D“ ”数字类型 ...
- 简单的redis工具类
import java.util.Arrays; import java.util.List;import java.util.Set; import org.apache.commons.lang. ...
- OpenGL学习笔记(4) GLM库的使用
OpenGL和DirextX不一样,没有内置的数学库,于是我们需要找一个第三方库,按照LearnOpenGL的教程我们使用GLM库,可以到他们的官网下载 glm常用的数据类型 vec2 二维向量 ve ...
- Windows系统环境变量之path环境变量(Java, Python环境变量配置)
系统: Windows10 path系统环境变量的作用: Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外 ...
- 如何在window服务器上搭建一个能代替ftp的传输工具
通常对于服务器上的文件管理和数据传输都是利用ftp来实现,但随着存储技术的发展,数据资产的存储规模和复杂程度不断提高,传统的ftp传输显得有笨重.今天给大家介绍一款能够取代ftp的在线文档管理软件—— ...
- Hyperledger Fabric 1.0 从零开始(一)
在HyperLedger/Fabric发布0.6的时候,公司就已经安排了一个团队研究这一块,后来也请IBM的专家组过来培训了一批人,不幸的是,这批人后来全走了,然后1.0就发布了.自从2017年7月H ...
- python打包成exe文件
在cmd命令提示符窗口中输入pip install pyinstaller(在python3的环境下,假如不能安装的话,用pip3 install pyinstaller指令) 使用指令pyinsta ...
- Docker入门与实践之 Dockerfile 语法详解
一.Dockerfile 概述 Dockerfile是docker程序的解释脚本文件,Dockerfile 是一条一条的指令,Docker程序将dockerfile中的一条条指令编译成Linux可执行 ...
- 什么是mvc模式
MVC是一个架构,或者说是一个设计模式,它就是强制性使应用程序的输入,处理和输出分开.将一个应用程序分为三个部分:Model,View,Controller. 原理图: 分析: Model 模型(完成 ...
- jumpserver安装与部署
1.简介 Jumpserver 是一款由Python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能.基于ssh协议来管理,客户端无需安装agent.特点: 完全开源,GPL授权 Pyth ...