我处理正则表达式,仅在给定值为A或B的情况下才返回1。
我用过
select 'A' REGEXP '^A|B$'
“ |”符号的行为类似于“或”,但结果与AB不一致:
select 'AB' REGEXP '^A|B$' = 1
虽然我希望这里没有匹配项。
答案 0 :(得分:2)
您当前的解决方案匹配
^A
-字符串开头的A
|
-或B$
-B
放在字符串的末尾。 REGEXP
operator可以返回 partial 匹配项(不像LIKE
运算符需要通配符模式来匹配整个字符串),因此可以匹配ABC
和CAB
。参见regex demo。
您可以使用
select 'A' REGEXP '^(A|B)$'
A|B
在这里的分组构造中,^
和$
都修改了A
和B
分支。参见this regex demo。
如果这些A
和B
是单个字符,请使用[AB]
方括号表达式:
'^[AB]$'
其中[AB]
与A
或B
匹配,而^
/ $
锚点修改括号内的每个字母。
请参见this regex demo。