I am migrating my MariaDB to MySQL and have come across differences.
I have a very simple query that produces results (197) in Maria DB but Zero in mySQL can anyone help?
SELECT DISTINCT title FROM films where title REGEXP 'The \\w{4}[^\\s]*\\b'
The database is exactly the same (exported from MariaDB into MySQL with no issues).
In MySQL 5.7, you have to use the POSIX-like regex library and use
SELECT DISTINCT title FROM films where title REGEXP 'The [[:alnum:]_]{4}[^[:space:]]*[[:>:]]'
Also, note that the regex matching here will be case insensitive, if you need to make The
only match The
and not THE
, you need to add the BINARY
keyword after REGEXP
.
Here,
[[:alnum:]_]{4}
- \w{4}
- four word chars, letters, digits or underscores[^[:space:]]*
- \S*
- zero or more non-whitespace chars[[:>:]]
- \b(?!\w)
- a right-hand (trailing) word boundary
Thank you @Wiktor Stribiżew I have re-run the query on both DBs and the results match up now, the bad news is that I'm going to have to redo all my regexs to fit POSIX!!
Hi Wiktor, I did upvote it but I haven't got 15 rep points so it won't show ;)