Brian Bell
Brian Bell

Reputation: 165

MySQL REGEXP not matching string

I have a table of messages. I am trying to find messages in the table that have an ID code which complies with a specific format. The regexp that I have below was written for matching these values in PHP, but I want to move it to a MySQL query.

It is looking for a specific format of an identifier code that looks like this:

[692370613-3CUWU]

The code has a consistent format:

I have a query that reads:

SELECT * FROM messages 
WHERE 
    msgBody REGEXP '\\[(\d){9,}-([A-NP-Z1-9]){5}\\]' 
      OR 
    msgSubject REGEXP '\\[(\d){9,}-([A-NP-Z1-9]){5}\\]'

I created a test row in the table which has only the sample value above in the msgBody field for testing - but it does not return any results.

I am guessing that I am missing something in the conversion of PHP style regex vs. MySQL.

Help is greatly appreciated.

Thank you!

Upvotes: 1

Views: 230

Answers (2)

Ωmega
Ωmega

Reputation: 43673

SELECT * FROM messages 
WHERE 
  msgBody    REGEXP '\\[([0-9]){9,}-([A-NP-Z1-9]){5}\\]' 
             OR
  msgSubject REGEXP '\\[([0-9]){9,}-([A-NP-Z1-9]){5}\\]'

Upvotes: 1

codaddict
codaddict

Reputation: 455010

Instead of \d try using [[:digit:]]

Upvotes: 1

Related Questions