У меня есть столбец в моей базе данных SQL (с использованием mySQL) «фамилия», в которой есть любое количество фамилий сотрудников. Я хочу написать запрос, который обрабатывает поиск фамилий, используя список с разделителями-запятыми.

Таким образом, пользователь наберет:

Garcia, Smith, Jones

И это сохраняется в строке lastNameQuery, которая затем передается в мою внутреннюю функцию API, которая вызывает команду SQL. Я хочу вернуть всех сотрудников в БД с этими фамилиями.

Есть ли какая-либо команда SQL SELECT, которую я могу использовать для поиска, используя такой список? Для других моих функций (которые обрабатывают только один поисковый запрос) я использую это:

"SELECT * FROM employees WHERE salary LIKE '%${salary}%'"

Который отлично работает. Есть ли способ изменить его для обработки списка? Я всегда могу разбить одну строку ("Garcia, Smith, Jones") на массив, если это необходимо, так что это не проблема. Любые идеи?

0
TorusWithSprinkles 22 Ноя 2022 в 21:58

1 ответ

Вам нужно либо сделать:

(lastname like '%Garcia%' or lastname like '%Smith%' or lastname like '%jones%')

Или создайте полнотекстовый индекс по фамилии (alter table add fulltext (lastname)), который позволит вам сделать

match (lastname) against ('Garcia, Smith, Jones')

Но не будет делать такие вещи, как поиск Гарсии, если вы ищете только «Гарк».

0
ysth 22 Ноя 2022 в 22:07