У меня есть следующий сценарий: у меня есть столбец таблицы с именем categoryid в категориях таблицы, мне нужно выбрать все строки в таблице, где categoryid равно 100 и выше с интервалами в 100.
например
SELECT * FROM categories WHERE categoryid IN(100,200,300,400,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,2000,2100,2200,2300,2400,2500,2600,2700,2800,2900,3000...
Есть ли лучший способ сделать это, чем вручную вводить все интервалы, он должен начинаться сотой и доходить до последнего номера. Имейте в виду, что последний номер может измениться, так как клиент добавляет новые категории. это возможно, надеюсь, что у меня есть смысл.
Таким образом, этот оператор%, который я использовал, называется оператором modulo, и он даст вам остаток после деления на число (в этом случае 100). Если остаток равен 0, то он кратен 100. Нам также нужно условие> = 100, потому что ноль также переходит в модульное условие.
SELECT * FROM categories WHERE categoryid >= 100 AND categoryid % 100 = 0;
Используйте modulo (остаток деления).
WHERE (MOD(categoryid, 100) = 0) AND (categoryid >= 100)
используйте оператор Modulo, который изображен на%
SELECT * FROM categories WHERE categoryid >= 100 AND categoryid % 100 = 0;
Чтобы дать другой вариант, вы также можете сделать это с помощью LIKE
SELECT * FROM categories WHERE categoryid LIKE "%00";
Используйте функцию в предложении where:
SELECT xField FROM yTable WHERE ({fn MOD (JourneyPatternPointId, 100)} = 0)