Oracle Decode: Your Ultimate Guide to Data Manipulation in Oracle Databases
Oracle DECODE - это функция, которая позволяет сравнивать значения и возвращать результат в зависимости от условия. Синтаксис функции выглядит следующим образом:
DECODE(expr, search1, result1, search2, result2, ..., default)
- expr - выражение, которое нужно проверить.
- search1, search2,... - значения, которые нужно сравнить с expr.
- result1, result2,... - результаты, которые нужно вернуть в случае совпадения.
- default - значение, которое нужно вернуть, если ни одно из условий не было выполнено.
Для лучшего понимания, можно рассмотреть примеры использования функции DECODE:
1. Пример сравнения значения поля в таблице:
SELECT last_name,
DECODE(job_id, 'SA_MAN', 'Sales Manager',
'SA_REP', 'Sales Representative',
'IT_PROG', 'Programming Manager',
'IT_REP', 'Programming Representative',
'Other') "Job Title"
FROM employees;
В этом примере мы сравниваем значение поля job_id в таблице employees с заданными значениями и возвращаем соответствующие результаты. Например, если job_id = 'SA_MAN', то возвращаемое значение будет 'Sales Manager'.
2. Пример вычисления суммы для каждого типа товара:
SELECT product_type,
DECODE(product_type, 'Electronic', SUM(price),
'Clothing', SUM(price),
'Food', SUM(price)) "Total Price"
FROM products
GROUP BY product_type;
Здесь мы используем функцию DECODE для вычисления суммы для каждого типа товара. Если тип товара – 'Electronic', то вычисляется сумма цен для этого типа товара. Если тип товара – 'Clothing', то вычисляется сумма цен для него и так далее.
В целом, функция DECODE в Oracle позволяет заменить несколько операторов IF-THEN-ELSE одной функцией, что делает код более компактным и читаемым.