Logo

dev-resources.site

for different kinds of informations.

CASE and DECODE in SQL

Published at
12/8/2024
Categories
Author
Pranav Bakare
Categories
1 categories in total
open
CASE and DECODE in SQL

CASE and DECODE in SQL

In Oracle SQL, CASE and DECODE are control-flow functions used to perform conditional logic within queries. They allow you to implement "if-then-else" logic to return different values based on specified conditions.

1. CASE Statement

The CASE statement is a flexible and readable conditional construct introduced in SQL92. It allows you to evaluate conditions and return corresponding values.

Syntax

Simple CASE


CASE expression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ...
    ELSE default_result
END

  • expression: The value to be evaluated.
  • value1, value2: Values to compare the expression against.
  • result1, result2: Results returned if the condition matches.
  • default_result: Returned if no conditions match (optional).

Searched CASE


CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END

  • condition1, condition2: Boolean conditions to evaluate.
  • This format is more flexible as it supports complex logical expressions.

Example

Simple CASE:

SELECT employee_id, 
       CASE department_id
           WHEN 10 THEN 'Sales'
           WHEN 20 THEN 'Marketing'
           WHEN 30 THEN 'Finance'
           ELSE 'Other'
       END AS department_name
FROM employees;

Searched CASE:

SELECT employee_id, 
       CASE 
           WHEN salary > 5000 THEN 'High'
           WHEN salary BETWEEN 3000 AND 5000 THEN 'Medium'
           ELSE 'Low'
       END AS salary_category
FROM employees;

2. DECODE Function

The DECODE function is Oracle-specific and provides a way to implement conditional logic. It is an older construct compared to CASE and is less readable but can achieve similar functionality.

Syntax


DECODE(expression, search1, result1, search2, result2, ..., default_result)

  • expression: The value to be compared.
  • search1, search2: Values to compare against the expression.
  • result1, result2: Results returned if the comparison matches.
  • default_result: Returned if no matches are found (optional).

Example with Gender Information:


SELECT emp_id, name, 
    DECODE(gender, 
           'M', 'Male', 
           'F', 'Female', 
           'Unspecified') AS gender_description
FROM employees;

Example of department_id


SELECT employee_id, 
       DECODE(department_id, 
              10, 'Sales', 
              20, 'Marketing', 
              30, 'Finance', 
              'Other') AS department_name
FROM employees;

When to Use

Use CASE for:

  • Complex conditions.
  • Better readability and maintainability.
  • Portability across different SQL databases.

Use DECODE for:

  • Simpler, equality-based checks in Oracle-specific scenarios.
  • When performance optimization for older systems is critical.

By understanding these constructs, you can enhance your SQL queries to handle conditional logic effectively.

Featured ones: