Я хочу иметь возможность искать и возвращать результаты по большинству столбцов в таблице MySQL.Я подумал об использовании базы данных myisam и полнотекстового поиска, но решил, что из-за снижения производительности лучше придерживаться innodb.Я также кратко подумал об использовании чего-то вроде Solr, но подобное решение кажется излишним в моей ситуации.
Я просто пытаюсь добавить функцию поиска в базу данных контактных данных.Когда пользователь вводит слово «Смит», я хочу, чтобы результат возвращал и отображал все строки таблицы, в которых имя, фамилия или даже адрес содержат слово Смит и т. Д.
Скажите, если это неправильный подход,но я остановился на использовании стандартной строки SQL, настроенной так:
SELECT * FROM contacts WHERE firstName LIKE ? OR lastName LIKE ? OR email LIKE ?
Конечно, фактическая строка запроса будет значительно длиннее, чем этот пример, потому что она будет включать большинство столбцов в таблице.
1) Я предпочитаю использовать подготовленные операторы при запросе базы данных для обеспечения безопасности, но когда я устанавливаю строку sql, как указано выше, код ищет отдельный оператор для каждого?Как я могу просто повторить то же самое "НРАВИТСЯ?"для каждого столбца?Или есть способ установить это подобно:
SELECT * FROM contacts WHERE firstName, lastName, email LIKE ?
Когда я первоначально передаю строку в подготовленное заявление, я окружаю ее символами подстановки (%).
2) Буду ли ябыть в состоянии искать оба столбца VARCHAR и INT?
РЕДАКТИРОВАТЬ: Я в конечном итоге использовал небольшую часть среды Spring, чтобы я мог использовать именованные параметры.К сожалению, JDBC не имеет этой функциональности.Это означало включение небольшой части среды Spring в мой путь сборки, чтобы я мог использовать jdbc jar.В качестве альтернативы я мог бы передать одну строку поиска для каждого параметра в строке запроса, но это привело бы к уродливому / трудному для чтения коду, и я не хотел взламывать ту же строку, поэтому я выбрал использование namedпараметры.