答案 0 :(得分:1)
也许此代码可以帮助您
示例代码:SELECT FIND_IN_SET('1', '1,2,3,4,5')
您的代码可能像:SELECT * from table WHERE FIND_IN_SET('2', array)>0
答案 1 :(得分:-1)
不幸的是,mysql中没有本地数组数据类型 看到这个 How to store arrays in MySQL?
最好的选择就是去Postgres支持的地方
或者,无论如何,您可以创建一个文本数据类型并将该数组另存为json。至于获取数据集。您需要在php上手动进行。单独在MYSQL中无法做到这一点
还是更好 再次将表格标准化为3NF 将ARRY分离到单独的表中,并使用ID将其绑定
答案 2 :(得分:-1)
您可以使用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 |
+----+-------------+
此外,正如 Praveen S 所述, FIND_IN_SET() 也为您服务,比LIKE