У меня есть запрос. Есть ли встроенная функция или любой другой метод, связанный с MySQL, который будет возвращать строки, содержащие EXACT word в поле таблицы базы данных? Я знаю, что с оператором MySQL LIKE вы можете искать заданный шаблон в столбце, который будет соответствовать строковому значению в строке шаблона, содержащей символы wild-card. Но с предложением MySQL LIKE оно также вернет записи подстроки.
Например.
Предположим, что три значения столбцов выглядят следующим образом:
1. "Take another shot of courage" 2. "The End of This age is Not Yet" 3. "Employers can obtain this wage rate by submitting a request"
Я хочу получить все строки, в которых значение столбца содержит точное слово «возраст»,
Если мы подготовим такой запрос
SELECT * FROM sometable WHERE somefield LIKE '%age%'
Он вернет все три строки. Но я хочу только получить второй ряд. Как мы это достигаем? Заранее спасибо.
Ура,
Дженсон.
Использовать этот запрос
SELECT * FROM sometable WHERE somefield LIKE '% age %' OR somefield LIKE 'age %' OR somefield LIKE '% age'
Вы можете использовать механизм регулярных выражений MySQL и сопоставлять символы границы слова [[:<:]]
и [[:>:]]
Это будет соответствовать age
но не courage
wage
или age
. Он также будет соответствовать возрасту -age-
или любой другой строке, где age
текста окружен символами без слов . Это означает, что он будет соответствовать age
в начале и конце строки.
По моему мнению, это немного менее сложно, чем три условия. Если возвращаемые совпадения типа -age-
приемлемы, вы можете это рассмотреть.
Я не тестировал производительность или переносимость этого запроса, чтобы вы могли подумать об этом.
SELECT * FROM sometable WHERE somefield RLIKE '[[:<:]]age[[:>:]]';
Попробуй это
1 SELECT * FROM sometable WHERE somefield LIKE '% age %' to search in middle of string 2 SELECT * FROM sometable WHERE somefield LIKE '% age' if word is at end of string 3 SELECT * FROM sometable WHERE somefield LIKE 'age %' if your word is at starting of the string