Выбор строк, где остаток (по модулю) равен 1 после деления на 2? - PullRequest
49 голосов
/ 21 сентября 2010

В опциях есть столбец, содержащий целое число.Я хочу выбрать строку, только если это значение% 2 = 1.

Я знаю, что это можно сделать в 2 запросах, но возможно ли это сделать в 1?

Ответы [ 4 ]

76 голосов
/ 21 сентября 2010

MySQL, SQL Server, PostgreSQL, поддержка SQLite с использованием знака процента в качестве модуля:

WHERE column % 2 = 1

Для Oracle вы должны использовать функцию MOD :

WHERE MOD(column, 2) = 1
18 голосов
/ 21 сентября 2010

По крайней мере некоторые версии SQL (Oracle, Informix, DB2, ISO Standard) поддерживают:

WHERE MOD(value, 2) = 1

MySQL поддерживает "%" в качестве оператора модуля:

WHERE value % 2 = 1
1 голос
/ 21 сентября 2010

Примечание: Не обращайте внимания на этот ответ, так как я, должно быть, неправильно понял вопрос.

select *
  from Table
  where len(ColName) mod 2 = 1

Точный синтаксис зависит от того, какой тип SQL вы используетеиспользование.

1 голос
/ 21 сентября 2010

select * from table where value % 2 = 1 отлично работает в mysql.

...