Is there a way to make a CASE statement in SQL fall through like the case statement in C#? What I don't want to do is the example below but if that’s my only option I guess I'll go with it.
EXAMPLE:
@NewValue =
CASE
WHEN @MyValue = '1' THEN CAST(@MyValue AS int)
WHEN @MyValue = '2' THEN CAST(@MyValue AS int)
ELSE NULL
END
EDIT:
I'm using SQL Server.
This is standard SQL behaviour: A CASE expression evaluates to the first true condition. If there is no true condition, it evaluates to the ELSE part. If there is no true condition and no ELSE part, it evaluates to NULL .
The case statement in SQL returns a value on a specified condition. We can use a Case statement in select queries along with Where, Order By, and Group By clause. It can be used in the Insert statement as well.
The SQL CASE Statement The CASE statement goes through conditions and returns a value when the first condition is met (like an if-then-else statement). So, once a condition is true, it will stop reading and return the result. If no conditions are true, it returns the value in the ELSE clause.
The CASE statement chooses from a sequence of conditions, and executes a corresponding statement. The CASE statement evaluates a single expression and compares it against several potential values, or evaluates multiple Boolean expressions and chooses the first one that is TRUE .
To answer your specific question: No, it cannot.
See, for example, the MySQL documentation for CASE. Every WHEN
must have a THEN result
, and there is no way around this. The THEN
is not marked as optional. The same applies to all other RDBMS I've used.
Here's another example: Sql Server's CASE expression
You already have a good alternative way to do it posted as a comment, so I won't repeat it here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With