← Назад к вопросам

Какие знаешь функции фильтрации в SQL?

1.2 Junior🔥 181 комментариев
#Базы данных и SQL

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Функции фильтрации в SQL

Что такое фильтрация

Фильтрация (Filtering) в SQL — это процесс отбора строк из таблицы на основе определённых условий. Это один из самых фундаментальных операций в работе с данными. Фильтрация выполняется с помощью различных операторов и функций в предложении WHERE.

1. Логические операторы

AND, OR, NOT — базовые логические операции:

SELECT * FROM employees WHERE department = "IT" AND salary > 50000;
SELECT * FROM employees WHERE department = "IT" OR department = "HR";
SELECT * FROM employees WHERE NOT department = "Sales";

2. Операторы сравнения

SELECT * FROM orders WHERE status = "completed";
SELECT * FROM products WHERE price != 100;
SELECT * FROM invoices WHERE amount > 1000;
SELECT * FROM items WHERE quantity >= 10;

3. IN и NOT IN

Проверка принадлежности значения к списку:

SELECT * FROM products WHERE category IN ("Electronics", "Books", "Clothing");
SELECT * FROM sales WHERE region NOT IN ("Asia", "Africa");
SELECT * FROM employees WHERE id IN (SELECT employee_id FROM projects WHERE status = "active");

4. BETWEEN

Отбор значений в диапазоне:

SELECT * FROM orders WHERE order_date BETWEEN "2024-01-01" AND "2024-12-31";
SELECT * FROM products WHERE price BETWEEN 100 AND 500;
SELECT * FROM employees WHERE salary NOT BETWEEN 30000 AND 50000;

5. LIKE

Поиск по шаблону:

SELECT * FROM users WHERE email LIKE "admin@%";
SELECT * FROM products WHERE name LIKE "%phone%";
SELECT * FROM codes WHERE code LIKE "A_C";

6. IS NULL и IS NOT NULL

Проверка пустых значений:

SELECT * FROM contacts WHERE phone IS NULL;
SELECT * FROM products WHERE description IS NOT NULL;
SELECT * FROM employees WHERE (salary > 50000) AND (manager_id IS NOT NULL);

7. Числовые функции фильтрации

SELECT * FROM accounts WHERE ABS(balance) > 1000;
SELECT * FROM items WHERE MOD(id, 2) = 0;
SELECT * FROM measurements WHERE ROUND(temperature, 1) >= 25.5;

8. Функции работы со строками

SELECT * FROM products WHERE LENGTH(name) > 20;
SELECT * FROM users WHERE UPPER(status) = "ACTIVE";
SELECT * FROM logs WHERE SUBSTRING(error_code, 1, 2) = "DB";
SELECT * FROM data WHERE TRIM(value) != "";

9. Функции работы с датами

SELECT * FROM orders WHERE EXTRACT(YEAR FROM created_at) = 2024;
SELECT * FROM logs WHERE DATE_PART("month", timestamp) = 3;
SELECT * FROM contracts WHERE DATEDIFF(end_date, start_date) > 365;

10. CASE: условная фильтрация

SELECT * FROM employees
WHERE CASE 
    WHEN salary > 100000 THEN TRUE
    WHEN bonus > 20000 THEN TRUE
    ELSE FALSE
END;

11. HAVING для фильтрации групп

Фильтрация после группировки:

SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 60000;

SELECT category, COUNT(*) as product_count
FROM products
GROUP BY category
HAVING COUNT(*) > 10;

Практические рекомендации

  • Используйте индексы на столбцах в WHERE для быстрой фильтрации
  • Избегайте функций на индексированных столбцах — замедляет поиск
  • Комбинируйте AND/OR правильно — используйте скобки для ясности
  • Используйте EXISTS вместо IN для больших подзапросов
  • Профилируйте запросы с EXPLAIN PLAN
  • Фильтруйте как можно раньше в цепочке JOINов

Правильная фильтрация — основа эффективных SQL-запросов!