Возможно, это действительно глупый вопрос, но, может быть, вы следуете тому, что хотите?
SELECT * FROM wallpapers
WHERE ( tags LIKE '%New%' OR name LIKE '%new%' )
and ( tags LIKE '%York%' OR name LIKE '%York%' )
Поиск обоев, которые должны иметь оба слова, но в любом месте.
Предупреждение Остерегайтесь SQL-инъекций таким образом при поиске «слов», таких как new'york
или new%york
. Пожалуй, самый простой способ - при расщеплении обрабатывать все неальфа / нечисловые символы как пробелы, так что new@york
и аналогичные становятся new
и york
.
Примечания о поиске:
Поиск таким способом в базах данных - это просто перебор (полное сканирование таблицы). Пока у вас есть только несколько обоев, это не большая проблема. Почти все современное дешевое оборудование должно иметь возможность осуществлять поиск по миллиону обоев в течение секунды или около того, если база данных помещается в память.
Однако с большими сайтами, где теги и информация об именах превышают доступную оперативную память, вы, безусловно, получите проблему. Тогда пришло время попробовать другой способ поиска. Однако, что делать в значительной степени, зависит от ожидаемой схемы использования, поэтому для ответа требуется больше информации.