Трудно сказать по вашему вопросу, но я предполагаю, что таблица ваших клиентов будет выглядеть примерно так:
id fName lName deleted
---------------------------------
1 John Doe N
2 Bill Clinton N
3 Fred Smith N
4 George Bush Y
Ваш запрос, как вы указали в своем вопросе, никогда не будет работать, так как будет выглядеть так:
SELECT *
FROM customer
WHERE fname LIKE '%Bill Clinton%' AND deleted = 'N'
OR
lName LIKE '%Bill Clinton%' AND deleted = 'N'
Нет записей в таблице, где поля fName ИЛИ lName содержат "Билл Клинтон"
Вам нужно помассировать текст # attribute.q #, чтобы он генерировал что-то вроде этого:
SELECT *
FROM customer
WHERE ((fName LIKE '%Bill%') OR (fName LIKE '%Clinton%')) AND deleted = 'N'
OR
((lName LIKE '%Bill%') etc.....
LIKE сравнения очень похожи на использование подстановочных знаков в именах файлов. Они не разделят блок текста для вас, но сообщат вам, существует ли фрагмент текста, дословно, внутри другого фрагмента текста.
Я думаю, что вам нужен ПОЛНЫЙ ТЕКСТ , который будет рассматривать отдельные слова в строке запроса и возвращать результаты. Конечно, FULLTEXT доступен только для типов таблиц MyISAM, поэтому, если вы используете InnoDB или какой-либо другой тип, вам не повезло.