SQL怎么查询出字段中等于某一个数字的记录? 50
例如数据表:idvalue11,3,45,7,922,4,6,8,1036,2,8,1,2442,19,8,7,4,6523,14,25,5,17631,55,59,5,...
例如数据表:
id value
1 1,3,45,7,9
2 2,4,6,8,10
3 6,2,8,1,24
4 2,19,8,7,4,6
5 23,14,25,5,17
6 31,55,59,5,4
--------------------------------
-- 表的结构 `test`
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`value` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
-- 转存表中的数据 `test`
INSERT INTO `test` (`id`, `value`) VALUES
(1, '1,3,45,7,9'),
(2, '2,4,6,8,10'),
(3, '6,2,8,1,24'),
(4, '2,19,8,7,4,6'),
(5, '23,14,25,5,17'),
(6, '31,55,59,5,4');
------------------------------------------------
我想select出 value中含有的数字等于4的所有记录(当然不等于45,24,14这些的,得出结果是第2、4、6条)。sql语句怎么写? 展开
id value
1 1,3,45,7,9
2 2,4,6,8,10
3 6,2,8,1,24
4 2,19,8,7,4,6
5 23,14,25,5,17
6 31,55,59,5,4
--------------------------------
-- 表的结构 `test`
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`value` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
-- 转存表中的数据 `test`
INSERT INTO `test` (`id`, `value`) VALUES
(1, '1,3,45,7,9'),
(2, '2,4,6,8,10'),
(3, '6,2,8,1,24'),
(4, '2,19,8,7,4,6'),
(5, '23,14,25,5,17'),
(6, '31,55,59,5,4');
------------------------------------------------
我想select出 value中含有的数字等于4的所有记录(当然不等于45,24,14这些的,得出结果是第2、4、6条)。sql语句怎么写? 展开
3个回答
展开全部
select * from test where value like '%,4' or value like '%,4,%' or value like '4,%';
这样???
分4在字段前,中,后三种???用regexp更好?
这样???
分4在字段前,中,后三种???用regexp更好?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from test where id = 4 or value = 4; 应该是这样吧?
追问
比如第6条: value=”31,55,59,5,4“,含有5个数字分别是31,55,59,5,4。其中有一个数字等于4。
你value = 4。难道要”31,55,59,5,4“=4?
追答
嗯,听你这么一说我的又好像不对了 怎么创建表有语法错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询