2010-08-03 60 views
0

任何人都可以帮我一个MySQL问题?我有一行的项目列表,例如:'1','2','3','4','5','6','7','8','9' .. 3个元素的集合..从3到3 ..现在我怎么可以用'4'以上的FIND_IN_SET搜索这个,然后从它的集合中返回。在这种情况下,告诉我那是一套2FIND_IN_SET问题或

SELECT FIND_IN_SET('''4''', REPLACE(`some`, ' ', '')) FROM `x` WHERE `id` = 2 

与一个..它返回我的位置..但现在,我想返回一个数字集合,其中4来自

'1','2','3'是一组,'4','5','6'是第二和'7','8','9'是最后的

+2

我觉得很难理解你在这里要做什么。 – 2010-08-03 10:53:34

回答

6

假设你的组总是有长度3,你可以对FIND_IN_SET的结果使用整数除法(但记住它是基于1的,所以你需要为此调整):

(x - 1) DIV 3 + 1 

所以,你的表情就变成了:

(FIND_IN_SET('''4''', REPLACE(`some`, ' ', '')) - 1) DIV 3 + 1 

注意,这个现在返回1而不是0,未找到的元素。如果这是一个问题,那么你可以单独测试这种情况,或者使用这个表达式代替:

(FIND_IN_SET('''4''', REPLACE(`some`, ' ', '')) + 2) DIV 3 
+0

谢谢,它的工作原理是我想要的。 – oriceon 2010-08-03 10:56:54

+1

+1心灵感应。 – 2010-08-03 12:30:56