FIND_IN_SET问题或

时间:2010-08-03 10:42:29

标签: sql mysql

任何人都可以帮我解决一个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'是最后一个

1 个答案:

答案 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