MariaDB CASE Expression
In MariaDB, CASE is a built-in expression, which is similar to if-elseif-else, and is used for multi-branch situations in flow control.
You can use the CASE operator to compare lists of conditions and return different results depending on which conditions (if any) match.
MariaDB CASE Syntax
Here is the syntax of the MariaDB CASE statement:
CASE value
WHEN compare_value THEN result
[WHEN compare_value THEN result ...]
[ELSE result]
END
or
CASE
WHEN condition THEN result
[WHEN condition THEN result ...]
[ELSE result]
END
Return value
The CASE expression the result in the THEN clause whose condition or value = compare_value is true.
MariaDB CASE Examples
CASE Statements are used in the case of multiple logical judgment branches. The following example shows how to pass the weekday index (0 to 6) to return the name of the corresponding weekday.
First, let’s create a table named test_case_weekday for demonstration.
DROP TABLE IF EXISTS test_case_weekday;
CREATE TABLE test_case_weekday (
weekday_index INT NOT NULL
);
Then, let’s insert some rows:
INSERT INTO test_case_weekday
VALUES (0), (1), (2), (3), (4), (5), (6);
Then, let’s look at the rows in the table:
SELECT * FROM test_case_weekday;
Output:
+---------------+
| weekday_index |
+---------------+
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+---------------+If we want to find out weekday indexes and weekday names in one query, we can use the CASE statement, as follows:
SELECT
weekday_index AS `Weekday Index`,
CASE weekday_index
WHEN 0 THEN 'Monday'
WHEN 1 THEN 'Tuesday'
WHEN 2 THEN 'Wednesday'
WHEN 3 THEN 'Thursday'
WHEN 4 THEN 'Friday'
WHEN 5 THEN 'Saturday'
WHEN 6 THEN 'Sunday'
ELSE 'Error'
END AS `Weekday Name`
FROM
test_case_weekday;
+---------------+--------------+
| Weekday Index | Weekday Name |
+---------------+--------------+
| 0 | Monday |
| 1 | Tuesday |
| 2 | Wednesday |
| 3 | Thursday |
| 4 | Friday |
| 5 | Saturday |
| 6 | Sunday |
+---------------+--------------+Here we can also use the second syntax to rewrite the above statement:
SELECT
weekday_index AS `Weekday Index`,
CASE
WHEN weekday_index = 0 THEN 'Monday'
WHEN weekday_index = 1 THEN 'Tuesday'
WHEN weekday_index = 2 THEN 'Wednesday'
WHEN weekday_index = 3 THEN 'Thursday'
WHEN weekday_index = 4 THEN 'Friday'
WHEN weekday_index = 5 THEN 'Saturday'
WHEN weekday_index = 6 THEN 'Sunday'
ELSE 'Error'
END AS `Weekday Name`
FROM
test_case_weekday;
The output is exactly the same as above.
Alternatives for NULL values
MariaDB CASE expressions are complex and difficult to write. When working with NULL values , you can use functions like NULLIF() or COALESCE() instead, which are more concise.
The MariaDB COALESCE() function returns the first non-NULL value, or NULL if there is not a non-NULL value.
MariaDB NULLIF() function returns NULL if the two parameters are the same, otherwise returns the first parameter.
Conclusion
In MariaDB, it CASE is a built-in expression, which is similar to if-elseif-else, and is used for multi-branch situations in flow control.