Если я понимаю ваш вопрос, вы хотите найти ice
в столбцах Synonyms1
и Synonyms2
, но убедитесь, что вы случайно не нашли совпадения с таким словом, как choice
.
Если вы когда-либо читали или слышали что-либо о предмете нормализации базы данных, вы бы поняли, что ваша база данных даже не соответствует требованиям для 1NF (первая нормальная форма), потому что она имеет столбцы, которые состоят из повторяющихся значений, которые, как Вы узнали, что делает поиск неэффективным и сложным. Но давайте продолжим:
Столбец синонимов может содержать только одно слово, поэтому он может выглядеть следующим образом:
ethereal
Или:
ethereal; beautiful; fragile; charming; petite; frail; elegant
Таким образом, слово, которое вы ищем, может быть:
- все значение столбца
- , которому предшествует ничто, за которым следует
;
- , которому предшествует пробел, а затем
;
- , перед которым стоит пробел и ничего не следует
Так что, если ваша версия MySQL не поддерживает регулярные выражения, то если вы ищете, например, слово ice
в столбце Synonyms2
предложение WHERE должно быть:
WHERE (
Synonyms2 = 'ice'
OR
Synonyms2 like 'ice;%'
OR
Synonyms2 like '% ice;%'
OR
Synonyms2 like '% ice'
)
Если вы работаете SQL 8+, то:
WHERE regexp_like(Synonyms2, '( |^)ice(;|$)')
Это означает, что ice
должен должен предшествовать либо пробел или начало строки, а затем ;
или конец строки.