У меня была эта проблема с FileSystemWatcher
и выяснилось, что следующий код решил проблему:
fsw.SynchronizingObject = this
Затем элемент управления использует текущий объект формы для решения с событиями, и поэтому будет в одной и той же теме.
Вы можете использовать LIKE
для этого
SELECT t.* FROM yourtable t
WHERE t.attr LIKE CONCAT('2,%')
OR t.attr LIKE CONCAT('%,2')
OR t.attr LIKE CONCAT('%,2,%')
Данные теста
CREATE TABLE `system_users` (
`id` varchar(32) NOT NULL,
`name` varchar(32) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `system_users`(`id`,`name`)
values
('1','1,5,3,12'),
('2','1,2,3'),
('3','1,12,13'),
('4','1,5,2,10,12'),
('5','2,3,4'),
('6','5,4,3,2');
Рабочий запрос:
SELECT * FROM system_users u
WHERE u.name LIKE CONCAT('2,%')
OR u.name LIKE CONCAT('%,2')
OR u.name LIKE CONCAT('%,2,%');
Результат выхода:
+----+-------------+
| id | name |
+----+-------------+
| 2 | 1,2,3 |
| 4 | 1,5,2,10,12 |
| 5 | 2,3,4 |
| 6 | 5,4,3,2 |
+----+-------------+
Кроме того, как упоминалось в «Правэне S», FIND_IN_SET () также работает для вас, он более прост и изящный, чем LIKE
Грустно Нет встроенного массива Datatype в mysql См. это Как хранить массивы в MySQL?
Лучшая ставка, которую вы можете сделать, это пойти на Postgres, где он имеет поддержка для нее
Или в любом случае вы можете создать текстовый тип данных и сохранить массив как json. Что касается получения набора данных. Вам нужно сделать это вручную на php. Нет никакого способа сделать это только в MYSQL
Или гораздо лучше, но нормализовать снова вашу таблицу в 3NF. Разделить ARRY в отдельную таблицу и связать ее с помощью ID
Возможно, этот код поможет вам
Пример кода: SELECT FIND_IN_SET('1', '1,2,3,4,5')
Возможно, ваш код: SELECT * from table WHERE FIND_IN_SET('2', array)>0