我的编程空间,编程开发者的网络收藏夹
学习永远不晚

sql中的regexp与like区别实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

sql中的regexp与like区别实现

1、REGEXP

  • 用途:高级字符串匹配,使用正则表达式。
  • 特点:灵活性强,能进行复杂模式匹配(如开头、结尾、字符集等)。
  • 基本语法
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次。

使用示例:

查找包含特定单词的行

SELECT column_name FROM table_name WHERE column_name REGEXP 'a';

查找以特定单词开头的行

SELECT column_name FROM table_name WHERE column_name REGEXP '^a';

查找以特定单词结尾的行

SELECT column_name FROM table_name WHERE column_name REGEXP 'a$';

查找包含特定字符集合的行

SELECT column_name FROM table_name WHERE column_name REGEXP '[abc]';

查找不包含特定字符集合的行

SELECT column_name FROM table_name WHERE column_name REGEXP '[^abc]';

查找包含多个模式之一的行

SELECT column_name FROM table_name WHERE column_name REGEXP 'pattern1|pattern2';

2、LIKE

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

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

  • 基本语法

SELECT column_name FROM table_name WHERE column_name LIKE pattern;

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

使用示例:

查找包含特定文本的行

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

SELECT * FROM table_name WHERE column_name LIKE '%a%';

查找以特定文本开头的行

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

SELECT * FROM table_name WHERE column_name LIKE 'a%';

查找以特定文本结尾的行(注意:LIKE 本身不直接支持以特定文本结尾的匹配,但可以通过反转字符串和模式来实现):

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

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

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

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

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

SELECT * FROM table_name WHERE column_name LIKE '_a%';

注意事项:

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

3、区别与选择

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

到此这篇关于sql中的regexp与like区别的文章就介绍到这了,更多相关sql regexp与like 内容请搜索编程客栈(www.lsjlt.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网(www.lsjlt.com)! 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

sql中的regexp与like区别实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

sql中的regexp与like区别实现

目录1、REGEXP2、LIKE3、区别与选择1、REGEXP用途:高级字符串匹配,使用正则表达式。特点:灵活性强,能进行复杂模式匹配(如开头、结尾、字符集等)。基本语法:SELECT column_name FROM table_na
sql中的regexp与like区别实现
2024-09-30

MySQL中REGEXP和LIKE的区别有哪些

这篇文章主要介绍MySQL中REGEXP和LIKE的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL中,REGEXP经常使用,用于某种模式去匹配某个字符串的一个方式,Like关键字我们也是经常使用,
2023-06-14

sql中like和=的区别

like 和 = 是 sql 中用于字符串比较的运算符,主要区别在于 like 允许通配符模糊匹配(% 和 _),而 = 仅适用于完全匹配。like 适用于模糊查询,性能较慢,且无法使用索引。= 用于精确匹配,性能较快,可使用索引。选择运算
sql中like和=的区别
2024-05-02

sql中rlike和like的区别是什么

在SQL中,LIKE和RLIKE是用于模式匹配的操作符,但它们在语法和功能上有所不同。LIKE是用于在字符串中查找特定模式的操作符,它通常用通配符(例如%和_)来表示任意字符或特定字符。LIKE是SQL标准中的操作符,几乎所有SQL数据库都
sql中rlike和like的区别是什么
2024-04-09

sql中null与空的区别

sql 中 null 表示未知或不存在的值,拥有自己的数据类型,不能被索引,通常占用更少的存储空间,在布尔表达式中为 false;空表示空字符串,拥有字符串数据类型,可以被索引,被视为 true。使用 null 表示数据未知,使用空表示数据
sql中null与空的区别
2024-05-02

java中继承与实现的区别

继承:如果多个类的某个部分的功能相同,那么可以抽象出一个类出来,把他们的相同部分都放到父类里,让他们都继承这个类。实现:如果多个类处理的目标是一样的,但是处理的方法方式不同,那么就定义一个接口,也就是一个标准,让他们的实现这个接口,各自实现自己具体的处理方法来
java中继承与实现的区别
2018-01-26

SQL中的Collation 及utf8mb4_unicode_ci与utf8mb4_generic_ci的区别

SQL中的Collation 描述了如何对查询出来的数据进行比较和排序,本质是定义了两个cell的数据进行比较的时候的compare算法。 特别说明几个SQL Collation常见词汇: 1.  ci: case ignore/insensitive,比较的
2014-10-05

sql中左连接与右连接的区别

sql 中左连接和右连接主要区别在于连接结果中优先显示哪个表的数据。左连接优先显示左表,若右表无匹配行则填充 null;右连接优先显示右表,若左表无匹配行则填充 null。SQL 中左连接与右连接的区别在 SQL 中,左连接和右连接是连接
sql中左连接与右连接的区别
2024-05-10

sql server 与 mysql 中常用的SQL语句区别讲解

目录sql server 与 mysql 的区别1. 首先说一下sql语句结束标志2. 查看表结构数量等3、查询前几条记录4、获取当前时间5、从数据库定位到某张表6、强制不使用缓存查询6、查询一个数据库所有的表 和表下的编程客栈所有列信息s
2022-12-16

PL/SQL中的分区表与分区索引怎么实现

在 PL/SQL 中实现分区表和分区索引,可以通过以下步骤:创建分区表:在创建表的时候,使用 PARTITION BY 子句指定分区方式,可以按照范围、列表或哈希等方式进行分区。CREATE TABLE sales (sale_id NUM
PL/SQL中的分区表与分区索引怎么实现
2024-05-08

SQL中concat、concat_ws()、group_concat()的使用与区别

目录一、concat()函数二、concat_ws()函数三、group_concat()函数一、concat()函数1、功能:将多个字符串连接成一个字符串。2、语法:concat(str1, str2,...)返回结果为连接参数产生
2023-05-16

sqlserver与mysql中常用的SQL语句区别讲解

这篇文章主要介绍了sqlserver与mysql中常用的SQL语句区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-12-16

编程热搜

目录