FIND_IN_SET — функция строки в MySQL, используемая для поиска местоположения строки в списке строк, разделяемых запятой.Оно возвращает целое число, показывая местоположение найденной строки (начиная с 1), и возвращает ноль, если строки нет в списке.Эта функция часто используется для обработки полей, хранящихся в запятой, хотя этот дизайн обычно не рекомендуется (предпочтительно использовать преимущества релятивированных баз данных, таких как создание таблицы многократных отношений).
грамматик
FIND_IN_SET (СТР, strlist)
str: струны, которые нужно искать.
strlist: содержит несколько списков строчек, разделенных запятой.
пример
Предположим, что существует таблица под названием user, содержащая список хоббисов, которые хранят хобби пользователей, которые разделены запятой.
SELECT * FROM users WHERE FIND_IN_SET(" eat ", hobbies) > 0;
Внимание.
Производительность: использование FIND_IN_SET в большом наборе данных может вызвать проблемы с производительностью, так как для этого необходимо сканировать и анализировать строки, разделяющие запятую.
Индекс: FIND_IN_SET не может быть использован в индексе, что означает, что запрос может не быть использован для ускорения извлечения данных.
Нормализация данных: было бы лучше нормализовать это многозначное поле, например, создав новую таблицу user_hobbies, в которой содержатся user_id и поле hobby, где каждое хобби пользователя занимает одну строку.Это позволяет использовать стандартные SQL-совместимые операции и использовать индекс для повышения производительности запроса.
В целом, в то время как FIND_IN_SET может быть полезен в некоторых случаях, было бы лучше не использовать запятую для хранения нескольких значений при проектировании базы данных, а использовать более нормализованный подход.
© CopyRight 2018-2025, Tool.hadsky.com