Освоение условной логики в SQL Server: изучение функции IIF и не только

В обширной сфере 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.