Кто-либо мог помочь мне с 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' является последним
Предполагая, что ваши множества всегда имеют длину 3, вы можете использовать целочисленное деление на результат FIND_IN_SET (но помните, что он основан на единице, поэтому вам нужно сделать поправку на это):
(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