В обширной сфере SQL Server условная логика играет решающую роль в манипулировании данными и управлении потоком программы. В нашем распоряжении есть один мощный инструмент — функция IIF, которая позволяет нам выполнять встроенные условные операции. Однако важно изучить альтернативные методы и понять их нюансы. В этой статье блога мы углубимся в различные методы, используя повседневную речь и практические примеры кода, чтобы улучшить ваши навыки работы с SQL.
Метод 1: функция IIF (встроенная IF)
Функция IIF — это краткий способ выражения условной логики непосредственно внутри запроса. Он принимает три параметра: логическое выражение, значение, если оно истинно, и значение, если оно ложно. Давайте рассмотрим сценарий, в котором мы хотим классифицировать сотрудников на основе их зарплаты:
SELECT EmployeeName, IIF(Salary >= 50000, 'High Earner', 'Standard Earner') AS SalaryCategory
FROM Employees;
Метод 2: оператор CASE
Инструкция CASE — это универсальная конструкция, позволяющая реализовать сложную условную логику. Он оценивает несколько условий и возвращает разные значения в зависимости от совпавшего условия. Вот пример использования CASE для выставления оценок учащимся на основе их оценок:
SELECT StudentName,
CASE
WHEN Marks >= 90 THEN 'A'
WHEN Marks >= 80 THEN 'B'
WHEN Marks >= 70 THEN 'C'
ELSE 'D'
END AS Grade
FROM Students;
Метод 3: Функция COALESCE
COALESCE удобна при работе со значениями NULL. Он возвращает первое ненулевое выражение из списка выражений. Допустим, у нас есть таблица с ценами на товары, и мы хотим отдать приоритет цене со скидкой над обычной ценой:
SELECT ProductName, COALESCE(DiscountedPrice, RegularPrice) AS FinalPrice
FROM Products;
Метод 4: функция NULLIF
Функция NULLIF сравнивает два выражения и возвращает NULL, если они равны; в противном случае возвращается первое выражение. Это полезно, когда мы хотим обрабатывать конкретные случаи, когда значение следует рассматривать как NULL. Рассмотрим ситуацию, когда мы хотим отображать только отдельные названия продуктов:
SELECT NULLIF(ProductName, '') AS DistinctProductName
FROM Products;
Метод 5: функция DECODE
Хотя функция DECODE не является встроенной в SQL Server, она широко используется в других базах данных, таких как Oracle. Он обеспечивает способ выполнения простых условных преобразований. Вот пример использования DECODE для категоризации клиентов по возрасту:
SELECT CustomerName,
DECODE(
CASE
WHEN Age >= 18 THEN 'Adult'
ELSE 'Minor'
END,
'Adult', 'Full Access',
'Minor', 'Restricted Access'
) AS AccessLevel
FROM Customers;
Исследуя функцию IIF и другие методы условной логики, такие как оператор CASE, COALESCE, NULLIF и даже неродную функцию DECODE, мы расширили наш набор инструментов SQL Server. Каждый подход имеет свои сильные стороны и может применяться в различных сценариях. Понимание этих методов позволит вам писать более выразительные и эффективные запросы SQL.