2010-08-03 82 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