美文网首页
数据库笔记-SQL过滤(LIKE&正则表达式)

数据库笔记-SQL过滤(LIKE&正则表达式)

作者: adi0229 | 来源:发表于2020-01-23 15:56 被阅读0次

操作符LIKE与通配符

查询语句:

SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE name LIKE '张%'
ORDER BY hp_max DESC 

结果:


MySQL的正则表达式

基本字符匹配

.匹配任意字符

查询语句:

SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE hp_start REGEXP '.35'
ORDER BY hp_max DESC 

结果:


OR匹配

查询语句:

SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE hp_start REGEXP '355|345'
ORDER BY hp_max DESC

结果:


匹配几个字符之一

查询语句:

SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE hp_growth REGEXP '[32]1'
ORDER BY hp_max DESC 

正则表达式 [32]1,[32]定义一组字符,它的意思是匹配 3 或匹配 2,也就是「31」或者 「21」都算是匹配的。

结果:


范围及特殊字符的匹配

查询语句:

SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE hp_growth REGEXP '\\.[7-9]'
ORDER BY hp_max DESC 

结果:


如果要匹配特殊字符的,需要加上前导「\」,「\-」表示查找「-」,「\.」表示查找「.」
这种就是「转义(escaping)」,在正则表达式里,本身有意义的字符,比如「.」是匹配任意字符的意思。那如果要匹配它,需要转义。
注意:在 MySQL 里,是比其他的正则表达式多一个「\」的,就是「\」。

元字符 说明
\t 制表
\n 换行

趣味提问:

如何匹配「\」?
答案:「\\」

匹配多个实例

\\([0-9] sticks?\\)匹配的是(NUM stick)或者(NUM sticks)。s后的使得s可选。

重复元字符

* 是 0 个或多个匹配
? 是 1 个或多个匹配
{n} 是指定n个匹配
{n,} 是 不少于 n 个匹配
{n,m} 是 指定匹配的范围,m不超过 255

定位符

查询语句:

SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE hp_max REGEXP '^[8-9]'
ORDER BY hp_max DESC 

^值的是字符串的开始,$是字符串的结尾。

这就是 REGEXP 与 LIKE 类似,但是它独特的好处:可以通过「定位符」只匹配「子字符串」。

结果:

Ref:

  • 《MySQL必知必会》(Ben Forts)
  • 极客时间《SQL必知必会》

相关文章

  • 数据库笔记-SQL过滤(LIKE&正则表达式)

    操作符LIKE与通配符 查询语句: 结果: MySQL的正则表达式 基本字符匹配 .匹配任意字符 查询语句: 结果...

  • 数据库笔记-SQL查询&过滤

    基础查询 查询排序 查询过滤 基础查询 以极客时间专栏《SQL必知必会》的王者荣耀表格为例。 SELECT语句 检...

  • Oracle SQL 学习笔记17 - 正则表达式

    在SQL语句中可以使用正则表达式来搜索、匹配和替换字符。Oracle 数据库从以下三方面支持正则表达式: SQL和...

  • 关系数据库标准语言SQL(一)

    声明:最近在准备考试,故整理数据库笔记。 关系数据库标准语言SQL(一) SQL概述  SQL是一种完整地数据库...

  • MySQL基础概念

    MySQL的基础笔记 数据库的相关概念 数据库的安装&卸载 SQL语言概念&分类 SQL语句的分类 一.数据库的相...

  • daily_sql

    查看表名中含有 scene 的数据库表:_sql awk 过滤某个区间的行: 数据库导出为 csv: 导出的 cs...

  • sql注入思路及过程(笔记)

    access数据库: Sql注入原理分析: 网站程序存在可控传递参数,参数未进行过滤直接带入数据库查询,导致攻击者...

  • 《mysql必知必会》读书实战笔记6-过滤数据

    第6章 过滤数据 两种方式过滤,一是SQL过滤,即在数据库服务器端过滤,节省服务器资源, 二是客户端应用程序或开发...

  • 第11天,Python操作MySQL

    @(python)[笔记] 目录 一、数据库操作 SQL语句分类: 1.1 数据库管理 1.1.1 显示 SHOW...

  • Hive的表操作

    1.创建表: mydb是表所属的数据库名称 2.列举指定数据库下的表: 3.使用正则表达式过滤数据库的表名: 4....

网友评论

      本文标题:数据库笔记-SQL过滤(LIKE&正则表达式)

      本文链接:https://www.haomeiwen.com/subject/hzynzctx.html