2014-11-21 126 views
1

我有一个MySQL数据库中的表像这样Mysql的正则表达式数字

id | values 

1 | 5,6,8,1,9 

2 | 12,22,5,20 

3 | 18,55,3,2 

我想在SELECT语句帮助行

要选择包含数字1或2

没有选择行包含像12或22

SELECT * FROM test WHERE values REGEXP '/(^[,])?(1)(^[,])?/'; 
+0

使用MySQL的'IN_SET'函数。 – Gumbo 2014-11-21 15:40:34

+6

我真的希望你可以将它转换为[正确标准化](http://en.wikipedia.org/wiki/Database_normalization)数据结构,因为数据库中的逗号分隔值是愤怒诱导的。 – tadman 2014-11-21 15:45:45

+3

'..WHERE FIND_IN_SET(1,values)> 0或FIND_IN_SET(2,values)> 0' – Mihai 2014-11-21 15:46:45

回答

0

这个数字排是你应该使用正则表达式:(^ |)[12]($ | ,)

SELECT * FROM test WHERE values REGEXP'/(^ |,)[12]($ |,)/';