mysql - 具有与整个字符串匹配的两个替代项的替代组

标签 mysql sql regex regex-alternation

我正在研究一个正则表达式,仅当给定值为 A 或 B 时才返回 1。

我用过

select 'A' REGEXP '^A|B$'

“|”符号的行为类似于“or”,但结果与 AB 的预期不同:

select 'AB' REGEXP '^A|B$' = 1

虽然我预计这里没有匹配。

最佳答案

您当前的解决方案匹配

  • ^A -A在字符串的开头
  • | - 或
  • B$ -B在字符串的末尾。

REGEXP operator可以返回部分匹配(与 LIKE 运算符不同,需要通配符模式来匹配整个字符串),因此可以匹配 ABCCAB 。请参阅regex demo .

您可以使用

select 'A' REGEXP '^(A|B)$'

A|B位于此处的分组构造内,并且 ^$两者都修改 AB分支。请参阅this regex demo .

如果这些AB是单个字符,请使用 [AB]括号表达式:

'^[AB]$'

哪里[AB]匹配AB ,以及 ^/$ anchor 修改括号内的每个字母。

参见this regex demo .

关于mysql - 具有与整个字符串匹配的两个替代项的替代组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51005989/

相关文章:

regex - 使用 PHP 进行整数值的 MongoDB 正则表达式搜索

mysql - Grails:无法从子查询中解析 List 属性

php - 不同类中的冗余 MySQL 查询

mysql - 用于更新的内部 Sql 不工作 Mysql 5.6

mysql - 真实世界总销售额 SQL 查询

javascript - 获取在正则表达式中匹配的组的索引?

MySQL选择时间戳不重叠的地方

MySQL Community 5.7 - 无效的默认值(日期时间字段类型)

MySQL一对多映射查询-如果匹配很多,不返回一个

javascript - javascript 中的正则表达式正则表达式模式用于带逗号的输入