Набор инструментов HS

Строки функции FIND_IN_SET в MySQL являются более подробными

🏷️ Теги Статьи: MySQL, FIND_IN_SET
👁️‍🗨️ 439 🕒 2024-12-30 09:53:22

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

陕ICP备13005805号

Сканировать

OR