sql中的regexp与like区别

news/2024/10/15 12:32:03/

sql中的regexp与like区别


💖The Begin💖点点关注,收藏不迷路💖

REGEXP_14">1、REGEXP

  • 用途:高级字符串匹配,使用正则表达式。
  • 特点:灵活性强,能进行复杂模式匹配(如开头、结尾、字符集等)。
  • 基本语法
sql">SELECT column_name FROM table_name WHERE column_name REGEXP 'pattern';

其中,column_name是要进行匹配的列名,table_name是要查询的表名,pattern是要匹配的正则表达式模式。

  • 正则表达式元素

以下是一些常见的正则表达式元素及其含义:

  • .:匹配任意单个字符(除了换行符)。
  • ^:匹配字符串的开始位置。
  • $:匹配字符串的结束位置。
  • []:指定一个字符集合,匹配其中的任意字符。例如,[abc]匹配abc
  • [^]:指定一个不匹配的字符集合。例如,[^abc]不匹配abc
  • |:逻辑“或”操作符,匹配左边的模式或右边的模式。例如,pattern1|pattern2匹配pattern1pattern2
  • ():用于组合模式,以便它们被视为一个整体。
  • *:匹配前面的模式零次或多次。
  • +:匹配前面的模式一次或多次。
  • ?:匹配前面的模式零次或一次。
  • {n}:匹配前面的模式恰好n次。
  • {n,}:匹配前面的模式至少n次。
  • {n,m}:匹配前面的模式至少n次且不超过m次。

使用示例:

  1. 查找包含特定单词的行

    sql">SELECT column_name FROM table_name WHERE column_name REGEXP 'a';
    
  2. 查找以特定单词开头的行

    sql">SELECT column_name FROM table_name WHERE column_name REGEXP '^a';
    
  3. 查找以特定单词结尾的行

    sql">SELECT column_name FROM table_name WHERE column_name REGEXP 'a$';
    
  4. 查找包含特定字符集合的行

    sql">SELECT column_name FROM table_name WHERE column_name REGEXP '[abc]';
    
  5. 查找不包含特定字符集合的行

    sql">SELECT column_name FROM table_name WHERE column_name REGEXP '[^abc]';
    
  6. 查找包含多个模式之一的行

    sql">SELECT column_name FROM table_name WHERE column_name REGEXP 'pattern1|pattern2';
    

LIKE_81">2、LIKE

  • 用途:简单字符串匹配,使用通配符%_

  • 特点:性能较好,适合简单模式匹配(如包含某字符)。

  • 基本语法

sql">SELECT column_name FROM table_name WHERE column_name LIKE pattern;

其中,pattern 可以包含文字字符、%(代表任意数量的字符,包括零个字符)和 _(代表一个任意字符)。

使用示例:

  1. 查找包含特定文本的行

找出 column_name 中包含 “text” 的所有行,你可以这样写:

sql">SELECT * FROM table_name WHERE column_name LIKE '%a%';
  1. 查找以特定文本开头的行

    如果你想找出 column_name 以 “prefix” 开头的所有行,你可以这样写:

    sql">SELECT * FROM table_name WHERE column_name LIKE 'a%';
    
  2. 查找以特定文本结尾的行(注意:LIKE 本身不直接支持以特定文本结尾的匹配,但可以通过反转字符串和模式来实现):

例如,在 MySQL 中,可以使用 REVERSE() 函数(如果可用)来反转字符串和模式,然后进行匹配:

sql">SELECT * FROM table_name WHERE REVERSE(column_name) LIKE REVERSE('%a');

这种方法可能不是所有数据库系统都支持的,且可能不如直接使用 REGEXP 或其他数据库特定的函数高效。

  1. 查找包含特定字符(但不是任意字符)的行

    如果你想查找 column_name 中第二个字符是 “a” 的所有行,你可以使用 _ 来表示第一个任意字符,然后紧跟 “a”:

    sql">SELECT * FROM table_name WHERE column_name LIKE '_a%';
    

注意事项:

  • LIKE 匹配是区分大小写的,除非数据库或查询被设置为不区分大小写(这取决于数据库的实现和配置)。
  • 使用 %_ 时要小心,因为它们会显著影响查询的性能,特别是当它们出现在模式的开始位置时。因为数据库需要扫描更多的行来找到匹配项。
  • 考虑使用 REGEXP 替代 LIKE,以获得更强大的匹配能力和灵活性。但是, REGEXP 可能会比 LIKE 更慢,特别是在处理大量数据时。

3、区别与选择

  • 性能LIKE通常更快,REGEXP在处理复杂模式时可能较慢。
  • 灵活性REGEXP更高,LIKE适合简单匹配。
  • 选择:根据需求选择,复杂匹配用REGEXP,简单匹配用LIKE

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

http://www.ppmy.cn/news/1532290.html

相关文章

【笔记】KaiOS 系统框架和应用结构(APP界面逻辑)

KaiOS系统框架 最早自下而上分成Gonk-Gecko-Gaia层,代码有同名的目录,现在已经不用这种称呼。 按照官网3.0的版本迭代介绍,2.5->3.0已经将系统更新成如下部分: 仅分为上层web应用和底层平台核心,通过WebAPIs连接上下层,这也是kaios系统升级变更较大的部分。 KaiOS P…

Unity 热更新(HybridCLR+Addressable)-安装配置HybridCLR+Addressable

一、安装HybridCLR 在https://hybridclr.doc.code-philosophy.com/官网中获取URL 下滑、复制链接在包管理器中下载 初始化,在unity菜单栏中点击HybridCLR下的Installer 安装成功后,会打印安装成功,并且会变成True 在Assets下创建文件夹&…

SVN 迁移到 GIT,并保留提交记录

1&#xff09;svn账号与git账号映射 创建 user.txt &#xff0c;格式如下&#xff0c;user.txt 放置在git base here 所选目录下即可 schacon Scott Chacon <schacongeemail.com> selse Someo Nelse <selsegeemail.com> 为了获得 SVN 使用的作者名字列表&#xf…

如何区分这个ip是真实ip,不是虚假的ip

区分一个IP地址是真实IP还是虚假IP&#xff08;伪造IP&#xff09;是非常重要的&#xff0c;特别是在网络安全、数据采集和其他与IP相关的业务场景中。虚假IP&#xff08;也称为伪造IP或假冒IP&#xff09;可以通过多种方式被创建&#xff0c;如代理、VPN、或IP欺骗&#xff08…

用Python集成免费IP归属地查询API

IP查询的优势是什么&#xff1f; IP查询是一种强大的工具&#xff0c;能够快速提供关于IP地址的信息&#xff0c;如地理位置、互联网服务提供商&#xff08;ISP&#xff09;、连接类型等。这些数据在多种场景下都非常有用&#xff0c;帮助用户理解网络环境和用户行为。 首先&…

Race Karts Pack 全管线 卡丁车赛车模型素材

是8辆高细节、可定制的赛车,内部有纹理。经过优化,可在手机游戏中使用。Unity车辆系统已实施-准备驾驶。 此套装包含8种不同的车辆,每种车辆有8-10种颜色变化,总共有75种车辆变化! 技术细节: -每辆卡丁车模型使用4种材料(车身、玻璃、车轮和BrakeFlare) 纹理大小: -车…

WebUI密码被锁定

锁定密码 打开-webui/打开-webui 讨论 #1027 (github.com) 当你忘记WebUI密码了

LQR算法核心思想

本章以倒立摆为解决目的 什么是线性二次型控制器&#xff08;LQR&#xff09; 开环系统 即状态变量的倒数 系统的状态空间矩阵A * 系统状态变量x A状态矩阵&#xff1a;描述系统本身物理特性的一个矩阵&#xff0c;它是由系统本身的机械结构、物理结构决定的&#xff0c;无法…