Warm tip: This article is reproduced from serverfault.com, please click

其他-MySQL和MariaDB中的正则表达式给出不同的结果

(其他 - regex in mySQL and MariaDB give different results)

发布于 2020-11-30 14:08:10

我正在将我的MariaDB迁移到MySQL,并且遇到了很多差异。

我有一个非常简单的查询,可在Maria DB中产生结果(197),但在mySQL中为零,任何人都可以帮忙吗?

SELECT DISTINCT title FROM films where title REGEXP 'The \\w{4}[^\\s]*\\b'

数据库完全相同(从MariaDB导出到MySQL,没有问题)。

Questioner
MarcusR1
Viewed
11
Wiktor Stribiżew 2020-12-01 18:23:40

在MySQL 5.7中,你必须使用类似POSIX的正则表达式库并使用

SELECT DISTINCT title FROM films where title REGEXP 'The [[:alnum:]_]{4}[^[:space:]]*[[:>:]]'

另外,请注意,此处的正则表达式匹配不区分大小写,如果The需要匹配The而不能匹配THE,则需要在之后添加BINARY关键字REGEXP

这里,

  • [[:alnum:]_]{4}--\w{4}四个字符的字符,字母,数字或下划线
  • [^[:space:]]*--\S*零个或多个非空白字符
  • [[:>:]]--\b(?!\w)右(后)字边界