НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
72 of 150 menu

Функция FIND_IN_SET

Функция FIND_IN_SET используется для поиска значения в строке, содержащей список элементов, разделённых запятыми (CSV). Если значение найдено, возвращается его позиция (начиная с 1), в противном случае возвращается 0.

Синтаксис

SELECT FIND_IN_SET(search_value, csv_string) FROM table_name

Таблицы для примеров

users
id name roles
1 Ivan admin,editor
2 Olga editor,author
3 Sergey viewer
4 Anna admin,author,editor

Пример

Давайте определим позицию роли editor в списке ролей каждого пользователя:

SELECT name, roles, FIND_IN_SET('editor', roles) AS role_position FROM users ORDER BY id

Результат выполнения кода:

name roles role_position
Ivan admin,editor 2
Olga editor,author 1
Sergey viewer 0
Anna admin,author,editor 3

Пример

Давайте выберем только тех пользователей, которые имеют роль admin:

SELECT id, name FROM users WHERE FIND_IN_SET('admin', roles) > 0 ORDER BY id

Результат выполнения кода:

id name
1 Ivan
4 Anna

Смотрите также

  • команду IN,
    которая проверяет значение в списке
  • функцию LOCATE,
    которая ищет подстроку в строке
  • функцию SUBSTRING_INDEX,
    которая выделяет часть строки по разделителю
  • функцию GROUP_CONCAT,
    которая собирает значения в одну строку
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить