Skip to main content
Log inGet a demo
Logical operators

SQL DECODE

What is SQL DECODE?

The SQL DECODE function is a database function used for conditional value replacement in a query result. It is primarily used in Oracle Database and a few other database systems. DECODE allows you to compare a value to a set of possible values and return a corresponding result when a match is found. It is often used for data transformation, simplifying complex CASE statements, and providing concise value substitution based on specific conditions.

When you would use it

You would use the SQL DECODE function when you need to perform conditional value replacement or mapping in your query. DECODE is useful when you want to simplify complex, multi-condition value assignments in your SQL statements. It can make your queries more concise and easier to read.

Syntax

The syntax for the SQL DECODE function is as follows:

DECODE(expression, search1, result1, search2, result2, ..., default_result)
  • expression: The value you want to compare.
  • search1, search2, ...: Values or expressions to compare against expression.
  • result1, result2, ...: Values or expressions to return when a match is found.
  • default_result: The value to return if no match is found (optional).

Parameter values

  • expression: The value you want to compare to the search values.
  • search1, search2, ...: Values or expressions to compare against expression.
  • result1, result2, ...: Values or expressions to return when a match is found.
  • default_result: The value to return if no match is found (optional).

Example query

Suppose we have a table named "students" with columns "student_id," "score," and "grade." We want to assign letter grades based on the students' scores. Here's the SQL query using the DECODE function to achieve this:

SELECT student_id, score,
       DECODE(
         WHEN score >= 90 THEN 'A'
         WHEN score >= 80 THEN 'B'
         WHEN score >= 70 THEN 'C'
         WHEN score >= 60 THEN 'D'
         ELSE 'F'
       ) AS grade
FROM students;

In the above query, we use the DECODE function to map scores to letter grades based on specific conditions.

Example table response

Assuming the "students" table contains the following data:

| student_id | score |
|------------|-------|
| 1          | 95    |
| 2          | 75    |
| 3          | 82    |
| 4          | 60    |
| 5          | 45    |

The query mentioned earlier would return the following result:

| student_id | score | grade |
|------------|-------|-------|
| 1          | 95    | A     |
| 2          | 75    | C     |
| 3          | 82    | B     |
| 4          | 60    | D     |
| 5          | 45    | F     |

This result assigns letter grades based on the students' scores using the DECODE function.

Use cases

  • Simplifying conditional value assignments in SQL queries.
  • Providing concise and readable code for conditional value replacement.
  • Mapping values to specific results based on multiple conditions.

SQL languages this is available for

The SQL DECODE function is primarily available in Oracle Database. While it's a powerful tool for Oracle SQL, it is not a standard SQL feature, and other database systems typically use different methods or functions to achieve similar results. In other database systems like MySQL, PostgreSQL, SQL Server, and SQLite, you might use CASE expressions or other proprietary functions for similar conditional value mapping.


Keep reading

SQL EXISTS

Read article

SQL NULLIF

Read article

SQL LNNVL

Read article

Ready to put your SQL knowledge to work?

Practice writing SQL to call data from the warehouse and sync it into Google Sheets in this 5 minute interactive demo.

Hightouch Audiences user interface.