← Назад к вопросам
Какие знаешь функции фильтрации в 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-запросов!