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语句怎么写?

SELECT [value] FROM [test] where INSTR( [value], ',4,' )>0
你这张表中最好不要使用关键字作为表的字段名字比如value
mysql中INSTR函数的用法
INSTR(字段名, 字符串)
这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始)
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-29
select * from test where value like '%,4' or value like '%,4,%' or value like '4,%';

这样???
分4在字段前,中,后三种???用regexp更好?本回答被网友采纳
第2个回答  2014-05-13
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?

追答

嗯,听你这么一说我的又好像不对了 怎么创建表有语法错误