Альтернатива 3 LIKE - MySQL

Узнай цену своей работы

Формулировка задачи:

Есть таблица статей, в каждой записи есть поле, отвечающее за показ их определенным юзерам, например "12,14,16" или "56,77", где цифры означают номера айди юзеров. Например мне нужны статьи, разрешенные юзеру 15, тогда нужна выборка типа такой:
SELECT * FROM articles WHERE ( users_num LIKE '15,%' OR users_num LIKE '%,15' OR users_num LIKE '%,15,%')
, ведь 15 может быть в начале, в середине и в конце. Но есть ли более адекватный способ генерации запроса?

Решение задачи: «Альтернатива 3 LIKE»

textual
Листинг программы
where concat(',', users_num, ',') like '%,15,%'

Объяснение кода листинга программы

В данном коде выполняется запрос к базе данных с условием LIKE для оператора CONCAT. Этот запрос объединяет значения переменных в одну строку с разделителем запятой, а затем проверяет, содержит ли эта строка числа 15.

  1. Код выполняет запрос к базе данных с использованием оператора SELECT.
  2. В запросе используется функция CONCAT для объединения значений переменных users_num в одну строку.
  3. Значения переменных users_num разделяются запятыми, чтобы сформировать строку, содержащую все значения.
  4. Строка, сформированная с помощью CONCAT, сохраняется в переменной concat_users_num.
  5. Затем проверяется, содержит ли переменная concat_users_num числа 15 с помощью оператора LIKE.
  6. Условие '%,15,%' указывает, что строка должна содержать числа 15, разделенные запятыми, чтобы соответствовать запросу.
  7. Результатом запроса будет набор данных, содержащих только те строки, которые соответствуют условию LIKE.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.4 из 5