Search for "whole word match" in MySQL
You can use REGEXP
and the [[:<:]]
and [[:>:]]
word-boundary markers:
SELECT *FROM table WHERE keywords REGEXP '[[:<:]]rid[[:>:]]'
Update for 2020: (actually 2018+)
MySQL updated its RegExp-Engine in version 8.0.4, so you will now need to use the "standard" word boundary marker \b:
SELECT *FROM table WHERE keywords REGEXP '\\brid\\b'
Also be aware that you need to escape the backslash by putting a second backslash.
Found an answer to prevent the classic word boundary [[::<::]]
clashing with special characters eg .@#$%^&*
Replace..
SELECT *FROM table WHERE keywords REGEXP '[[:<:]]rid[[:>:]]'
With this..
SELECT *FROM table WHERE keywords REGEXP '([[:blank:][:punct:]]|^)rid([[:blank:][:punct:]]|$)'
The latter matches (space, tab, etc) || (comma, bracket etc) || start/end of line. A more 'finished' word boundary match.
You can use like
with the wildcard marker to catch the possibilities (at start, at end, in middle, and alone), something like this should suffice:
select blah blah blah where column like 'rid %' or column like '% rid' or column like '% rid %' or column = 'rid'