MySQL regexp how to“;如果;

MySQL regexp how to“;如果;,mysql,regex,Mysql,Regex,我需要使用regexp跳过单词DORM、DORM和DORM,但如果后面有单词PREMIUM、PREMIUM或PREMIUM,则保留它们。我该怎么做?据我所知,我可以用这个正则表达式跳过“DORM,DORM和DORM”(^DORM | DORM | DORM | DORM),但是在那之后我怎么做“if”呢?让排序规则(以ci结尾的排序规则)为您进行大小写折叠会更有效。如果您同意,那么这可能是最简单的: WHERE str LIKE '%dorm%premium%' 等效的regexp速度较慢:

我需要使用regexp跳过单词DORM、DORM和DORM,但如果后面有单词PREMIUM、PREMIUM或PREMIUM,则保留它们。我该怎么做?据我所知,我可以用这个正则表达式跳过“DORM,DORM和DORM”(^DORM | DORM | DORM | DORM),但是在那之后我怎么做“if”呢?

让排序规则(以
ci
结尾的排序规则)为您进行大小写折叠会更有效。如果您同意,那么这可能是最简单的:

WHERE str LIKE '%dorm%premium%'
等效的regexp速度较慢:

WHERE str REGEXP 'dorm.*premium'
但是,如果需要单词边界,这在
regexp
中有效,但不像
那样:

WHERE str REGEXP '[[:<:]]dorm[[:>:]].*[[:<:]]premium[[:>:]]'
WHERE str REGEXP'[[::].[[::]]
这个问题有很多问题(因此我的答案也是如此):

  • 为什么你把“锚”(
    ^
    )放在
    宿舍
    前面,而不是其他人
  • 如果字符串中有单词
    somemy
    ,该怎么办
  • 宿舍应如何处理
  • 坚持使用regexp有什么原因吗
  • “跳过单词”是什么意思?在
    WHERE
    子句“跳过行”中使用的
    REGEXP
    (或
    LIKE

什么意思,“跳过使用regexp”?选择某个字段不包含“宿舍”的所有记录?另外,
(^DORM | DORM | DORM)
是一个奇怪的regexp,它匹配字符串开头的
DORM
,但
DORM
DORM
字符串中的任意位置…?不清楚您在问什么。请发布更多代码,以便我们可以看到上下文“DORM”是否需要位于字符串的开头,或者是否可以位于字符串中的任何位置?