任何人都可以帮我解决一个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
用那个..它让我回到了位置..但是现在,我想要返回一些4来自哪个集合
'1','2','3'是一组,'4','5','6'是第二个,'7','8','9'是最后一个
答案 0 :(得分: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