Приведи пример SQL-запроса для выборки записей с нечетными значениями в поле ID.

«Приведи пример SQL-запроса для выборки записей с нечетными значениями в поле ID.» — вопрос из категории Базы данных, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для выборки строк, где значение столбца ID является нечетным числом, можно использовать оператор взятия остатка от деления (% или MOD).

Основной вариант (используя оператор %):

SELECT * FROM employees WHERE (id % 2) <> 0;

Альтернативный вариант (используя функцию MOD):

SELECT * FROM employees WHERE MOD(id, 2) = 1;

Объяснение:

  • id % 2 вычисляет остаток от деления значения id на 2.
  • Для четных чисел остаток равен 0, для нечетных — 1.
  • Условие <> 0 или = 1 фильтрует только нечетные ID.

Оптимизация с помощью битовой операции (часто более эффективно):

SELECT * FROM employees WHERE (id & 1) = 1;

Эта операция использует побитовое И (&). Младший бит любого нечетного числа всегда равен 1, поэтому id & 1 вернет 1 только для нечетных id.

Совместимость с разными СУБД:

  • SQL Server, MySQL, PostgreSQL: Поддерживают оба варианта (% и &).
  • Oracle: Поддерживает MOD(id, 2). Оператор % может не работать, вместо него часто используют MOD().
  • SQLite: Поддерживает оператор %.

Важное замечание: Если в таблице есть значения NULL в столбце id, они не будут включены в результат, так как любая арифметическая операция с NULL возвращает NULL, а условие NULL = 1 ложно.