Deep dive into the SQL CASE expression. You will explore its syntax, uses, and provide examples to illustrate its applications.
SQL, or Structured Query Language, is the standard language for dealing with Relational Databases. SQL can be used to insert, search, update, and delete database records. But beyond these basic operations, SQL also offers some powerful features, one of which is the CASE expression.
What is a SQL CASE Expression?
The CASE expression in SQL is a conditional expression, similar to “if…else” statements found in other programming languages. It allows us to perform conditional logic in our SQL queries, where you can change the data that is returned based on specific conditions. It’s a way to make your SQL statements more powerful and flexible.
SQL CASE Expression Syntax
The SQL CASE expression has two formats: the simple CASE expression and the searched CASE expression.
Simple CASE Expression
Here’s the syntax for a simple CASE expression:
CASE input_expression
WHEN expression [THEN result_expression] [...n]
[
ELSE else_result_expression
]
END
In this form, the input_expression
is compared to the when_expression
to check for equivalency. If they are equal, the corresponding result_expression
is returned. If no matches are found and an ELSE
clause is provided, the else_result_expression
is returned. If an ELSE clause isn’t provided and no match is found, a NULL value is returned.
Searched CASE Expression
And here’s the syntax for a searched CASE expression:
CASE
WHEN boolean_expression THEN result_expression [...n]
[
ELSE else_result_expression
]
END
In this form, SQL evaluates each boolean_expression
in order. When a boolean_expression
evaluates to true, SQL returns the corresponding result_expression
. If no boolean_expression
evaluates to true and an ELSE
clause is provided, the else_result_expression
is returned. If an ELSE
clause isn’t provided and no boolean_expression
is true, a NULL value is returned.
SQL CASE Expression: An Example
To better understand how the SQL CASE expression works, let’s consider an example. Assume you have a students
table that stores information about students, and it looks something like this:
| StudentID | FirstName | LastName | Grade |
|-----------|-----------|----------|-------|
| 1 | John | Doe | 85 |
| 2 | Jane | Smith | 90 |
| 3 | Mike | Johnson | 76 |
| 4 | Lisa | Brown | 88 |
Suppose you want to categorize students based on their grades: ‘Excellent’ for grades above 90, ‘Good’ for grades between 80 and 90, and ‘Fair’ for grades below 80. You can use a CASE expression to accomplish this.
Here’s how you might write that query:
SELECT
FirstName,
LastName,
Grade,
CASE
WHEN Grade >= 90 THEN 'Excellent'
WHEN Grade >= 80 AND Grade < 90 THEN 'Good'
ELSE 'Fair'
END AS GradeStatus
FROM
students;
In the query above, the CASE
expression checks each student’s grade and assigns a grade status of ‘Excellent’, ‘Good’, or ‘Fair’ based on the value of the grade. This newly created data is then presented in a column labeled GradeStatus
.
Running this query against our sample data, the result would look something like this
| FirstName | LastName | Grade | GradeStatus |
|-----------|----------|-------|-------------|
| John | Doe | 85 | Good |
| Jane | Smith | 90 | Excellent |
| Mike | Johnson | 76 | Fair |
| Lisa | Brown | 88 | Good |
Conclusion
The SQL CASE expression is an incredibly versatile tool that allows for complex, conditional logic to be written directly within your SQL queries. By understanding and leveraging the CASE expression, you can create more powerful, dynamic, and flexible queries to extract valuable insights from your data.