Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MariaDB regex working in online regex testers does not work in SELECT WHERE REGEXP

I'm having a problem a dataset I have been given in bad format E.G fullName column and no breakdown of names I'm wanting to search where any of the names start with a given letter E.G 'J'

So this is my Statement but I just get complaints about unexpected REGEXP

SELECT * FROM `Officers` WHERE `fullName` REGEXP '.*\sJ.*';

Is there any way to do this in MariaDB, unfortunately, the names are not of a fixed word count some are only 2 names others are 6 names long so 4 middle names.

like image 327
Barkermn01 Avatar asked Sep 28 '17 14:09

Barkermn01


2 Answers

You may use

REGEXP '\\bJ'
        ^^^

Here, the \b is a word boundary that will force a match only when J is not preceded with a letter, digit or _.

The \ is doubled because the regex engine expects a literal \, and two backslashes are required.

like image 95
Wiktor Stribiżew Avatar answered Oct 16 '22 10:10

Wiktor Stribiżew


Try using something like this:

SELECT * FROM `Officers` WHERE `fullName` REGEXP '[[:<:]]J'

See docs: https://dev.mysql.com/doc/refman/5.7/en/regexp.html

like image 1
Usagi Miyamoto Avatar answered Oct 16 '22 11:10

Usagi Miyamoto