MYSQL必知必会读书笔记 第九章 使用正则表达式过滤数据

  • 正则与LIKE的区别
  •  Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符、字符串。

    例如:select * from wp_posts where post_name REGEXP‘hello‘,可以检索出列post_name中所有包含hello的行

      REGEXP‘.og‘ .是正则表达式中里一个特殊的字符。它表示匹配一个字符,因此,dog,hog,mog等等都能匹配。

    注意:

    关于LIKE和REGEXP的区别:LIKE匹配整个列。如果被匹配的文本仅在列值中出现,LIKE并不会找到它,相应的行也不会返回(当然,使用通配符除外)。而REGEXP在列值内进行匹配,如果被匹配的匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回,这时一个非常重要的差别(当然,如果适应定位符号^和$,可以实现REGEXP匹配整个列而不是列的子集)。

    关于大小写的区分:MySQL中正则表达式匹配(从版本3.23.4后)不区分大小写。如果要区分大小写,应该使用BINARY关键字,如where post_name REGEXP BINARY ‘Hello.000‘

  • 基本字符匹配

    检索列prod_name 包含文本1000的所有行:

  • 进行OR匹配

    相当于:或操作 “|”

  • 匹配几个字符之一

    只想匹配特定的字符。 可以通过指定一组用[]括起来的字符来完成。

    [456]定义了一组字符,他的意思是匹配4或5或6. []是另一种形式的OR语句。[456][4|5|6]的缩写。

  • 匹配范围

    [1-3] a-z都是合法的范围、

  • 匹配特殊字符

    正则表达式语言由特殊含义的特殊字符构成。

    . 在正则表达式中表示匹配任何一个字符

    比如匹配prod_name中包括on字符串的行:

    那如何匹配.,[],|,-

    为了匹配特殊字符,必须用\\为前导。 比如\\.表示查找·

  • 匹配字符类

  • 匹配多个实例

    再比如 匹配连在一起的4位数字:

    sticks? : s后的使s可选,因为匹配它前面紧跟的任何字符的0次或者1次出现。

    [:digit:]匹配任意数字,因而它为数字的一个集合。{4}确切地要求它前面的字符出现4次。

    所以[:digit:]{4}匹配连在一起的任意4位数字。

  • 定位符

    目前为止所有例子都是匹配一个串中任意为止的文本。为了匹配特定为止的文本,需要使用定位符。

也可以在不使用数据库的情况下测试正则表达式的正确性:

SELECT 来测试正则表达式,REGEXP检查总是返回0或1,

SELECT  ’HELLO‘  REGEXP ’0‘//返回为0

时间: 2024-10-07 10:17:19

MYSQL必知必会读书笔记 第九章 使用正则表达式过滤数据的相关文章

读书笔记第九章

第九章HAL是建立在linux驱动之上的一套程序库.这套程序库并不属于linux内核,而是属于linux内核层之上的应用层.可以用来保护不想公开源代码的作者.HAL架构比较简单,其基本原理就是在安卓系统中使用程序库调用位于内核空间的linux驱动,然后安卓应用程序可以通过NDK程序访问HAL中的程序库,或直接在安卓应用程序中访问HAL中的程序库.编写一款支持HAL的linux驱动程序的步骤:1.编写linux驱动,linux驱动的代码要尽量简介,尽可能将业务逻辑放到HAL library中.2.

Redis Essentials 读书笔记 - 第九章: Redis Cluster and Redis Sentinel (Collective Intelligence)

Chapter 9. Redis Cluster and Redis Sentinel (Collective Intelligence) 上一章介绍了复制,一个master可以对应一个或多个slave(replica), 在以下的情况下是够用的: 1. master有足够内存容纳所有key 2. 通过slave可以扩展读,解决网络吞吐量的问题 3. 允许停止master的维护窗口时间 4. 通过slave做数据冗余 但复制解决不了自动failover和自动resharding的问题,在以下的情

《Python基础教程》 读书笔记 第九章 魔法方法、属性和迭代器(上)

构造方法 在Python中创建一个构造方法很容易.只要把init方法的名字从简单的init修改为魔法版本__init__即可: >>> class FooBar: ...     def __init__(self): ...         self.somevar=42 ... >>> f=FooBar() >>> f.somevar 42 给构造方法传几个参数 >>> class FooBar: ...     def __in

Android深度探索读书笔记 第九章

HAL是建立在linux驱动之上的一套程序库,这套程序库属于linux内核层之上的应用层.编写一款支持HAL的linux驱动程序:1.在为linux驱动添加HAL,要想尽量保护敏感数据.Linux驱动的代码就要尽量简洁,尽可能将业务逻辑放到HAL library中.2.HA类就是普通的linux Library文件 ,但这类库文件有一个接口.通过HAL_MODULE_INFO_SYM变量实现.3.service Library也是Linux Library,也就是说service Library

《利用python进行数据分析》读书笔记--第九章 数据聚合与分组运算

对数据进行分组并对各组应用一个函数,是数据分析的重要环节.数据准备好之后,通常的任务就是计算分组统计或生成透视表.groupby函数能高效处理数据,对数据进行切片.切块.摘要等操作.可以看出这跟SQL关系密切,但是可用的函数有很多.在本章中,可以学到: 根据一个或多个键(可以是函数.数组或DataFrame列名)拆分pandas对象 计算分组摘要统计,如计数.平均值.标准差.,或自定义函数 对DataFrame的列应用各种各样的函数 应用组内转换或其他运算,如规格化.线性回归.排名或选取子集等

C primer plus 读书笔记第九章

本章的标题是函数.C的设计原则是把函数作为程序的构成模块. 1.函数概述 函数的定义:函数是用于完成特定任务的程序代码的自包含单元. 使用函数的原因:1.函数的使用可以省去重复代码的编写.2.使得程序模块化,更有利于阅读.修改和完善.以这种方式看待函数有利于把精力投入到程序整体设计而不是实现其细节. 函数同变量一样有多种类型.任何程序在使用函数之前都需要声明该函数类型. 函数参数.函数类型没啥说的,其他语言都会讲到. PS:函数的结尾最好只使用一次return,这样更有利于阅读程序的人明白函数的

《C++ Primer Plus 6th》读书笔记 - 第九章 内存模型和名称空间

1. 单独编译 1.1 头文件中常包含的内容: 函数原型 使用#define或const定义的符号常量 结构声明 类声明 模板声明 内联声明 1.2 只需将源代码文件加入到项目中,而不用加入头文件.这是因为用#include管理头文件. 1.3 避免多次包含同一个头文件 1 #ifndef COORDIN_H_ 2 #define COORDIN_H_ 3 // place include file contents here 4 #endif 2. 存储持续性.作用域和链接性 1. 存储方案:

《MySQL必知必会》读书笔记_4

PS:一个实际的存储过程案例 CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_delete_article_by_id`(IN `id` int) BEGIN #Routine body goes here... DECLARE temp INT; SET @aid = id; SELECT COUNT(*) FROM gk_reply_article WHERE a_id = @aid INTO temp; IF(temp <> 0) THEN

《MySQL必知必会》读书笔记_3

PS:这次的信息量有点大. 聚集不同值 SELECT AVG(DISTINCT prod_price) AS avg_price FROM products WHERE vend_id = 1003 #相同的值不会被计算 组合聚集函数 SELECT COUNT(*) AS num_items, MIN(prod_price) AS price_min, MAX(prod_price) AS price_max, AVG(prod_price) AS price_avg FROM products