FIND_IN_SET问题或

ori*_*eon 0 mysql sql

任何人都可以帮我解决一个mysql问题?我有一个项目列表的行,例如:'1','2','3','4','5','6','7','8','9'.. 3个元素的集合..从3到3 ..现在我怎么能用FIND_IN_SET在'4'之上搜索并从它的设置返回.在那种情况下,告诉我那是来自第2组

SELECT FIND_IN_SET('''4''', REPLACE(`some`, ' ', '')) FROM `x` WHERE `id` = 2
Run Code Online (Sandbox Code Playgroud)

与那一个...它返回我的位置..但现在,我想返回一些4来自的集合

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

Mar*_*ers 6

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

(x - 1) DIV 3 + 1
Run Code Online (Sandbox Code Playgroud)

所以你的表达成为:

(FIND_IN_SET('''4''', REPLACE(`some`, ' ', '')) - 1) DIV 3 + 1
Run Code Online (Sandbox Code Playgroud)

请注意,对于未找到的元素,现在返回1而不是0.如果这是一个问题,那么您可以单独测试此案例或使用此表达式:

(FIND_IN_SET('''4''', REPLACE(`some`, ' ', '')) + 2) DIV 3
Run Code Online (Sandbox Code Playgroud)