我需要2个不区分大小写的正则表达式模式.其中一个相当于SQL的%.所以%word%.我的try 是'^[a-zA-Z]*word[a-zA-Z]*$'次.

Question 1:这似乎有效,但我想知道这是否等于%word%.

最后,最后一个模式类似于%,但在单词前后需要3个或更多字符.例如,如果目标词是word:

  • words=匹配,因为它前后都没有3个或更多字符.
  • swordfish=不匹配,因为word后有3个或更多字符
  • theword=不匹配,因为它前面有3个或更多字符
  • mywordly=匹配,因为它在word之前或之后不包含3个或更多字符.
  • miswordeds=不匹配,因为它前面有3个字符.(后面还有3个字,但已经符合标准).

Question 2:对于第二个正则表达式,我不太确定如何开始.我将使用REGEXP函数在MySQL查询中使用正则表达式,例如:

SELECT 1
WHERE 'SWORDFISH' REGEXP '^[a-zA-Z]*word[a-zA-Z]*$'

推荐答案

First Question:

根据https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html#operator_like

对于LIKE,您可以在模式中使用以下两个通配符:

  • %匹配任意数量的字符,甚至零个字符.
  • _正好匹配一个字符.

这意味着正则表达式^[a-zA-Z]*word[a-zA-Z]*$'不等于%word%

Second Question:

*更改为{0,2},表示您希望在其前后最多匹配2个字符:

SELECT 1
WHERE 'SWORDFISH' REGEXP '^[a-zA-Z]{0,2}word[a-zA-Z]{0,2}$'

为了区分大小写:

SELECT 1 WHERE LOWER('SWORDFISH') REGEXP '^[a-z]{0,2}word[a-z]{0,2}$'

Mysql相关问答推荐

SQL Store Procedure Throwing [42000][1064]您在EXECUTE stat USING声明上的SQL语法中有错误

慢查询日志(log)甚至包括快速查询,因为它包括等待锁定所花费的时间

我需要为用户提供MySQL视图和存储的 routine ,但不是基础表

为什么我安装MySQL时不能使用3306端口?

用于将重复行的唯一列值作为单独列获取的SQL查询

MySQL:统计单词在单元格中出现的次数,并将数字放在bra中单词的旁边

计算男生的人数和女生的人数.学生是有入学记录的人

从 NextJS/Prisma 添加用户 ID (FK) 到 MySQL 表

将 GORM 与自定义连接表和外键结合使用

生成json数据并根据特定表的匹配条件进行过滤

「已解决」MySQL 连接在 vb6 上出现运行时错误 -2147467259 (80004005),但在 VBA Excel 上工作

如何在 mysql 中获取 Day Wise 的平均值?

为什么这个 NOT NULL 到 NULL 迁移会触发大量 I/O 操作?

查询mysql中无法识别数据值

Spring Boot:Jdbc javax.net.ssl.SSLException:在接收对等方的 close_notify 之前关闭入站

#1146 - 表 'phpmyadmin.pma_recent' 不存在

我的 PDO 声明不起作用

MySQL:切换 int 字段值的简单方法

如何通过一个语句描述数据库中的所有表?

按 COUNT(*) 过滤?