Вопрос о FIND_IN_SET или

Кто-либо мог помочь мне с 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
задан oriceon 3 August 2010 в 10:42
поделиться

1 ответ

Предполагая, что ваши множества всегда имеют длину 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
6
ответ дан 4 September 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: