SQL Server: CAS QUAND OU ALORS d'AUTRE FIN => le OU n'est pas pris en charge
La OR
dans le WHEN
clause de CASE
déclaration n'est pas pris en charge. Comment puis-je faire cela?
CASE ebv.db_no
WHEN 22978 OR 23218 OR 23219 THEN 'WECS 9500'
ELSE 'WECS 9520'
END as wecs_system
Vous devez vous connecter pour publier un commentaire.
Ce format nécessite que vous utilisez:
Sinon, utilisez:
=
si vous étiez en comparant à une valeur unique. Cependant,(22978, 23218, 23219)
est un tableau etIN
est nécessaire pour correspondre qu'à une seule de ces valeurs.IN
mot-clé est bien meilleure façonVous pouvez utiliser l'une des expressions que LORSQUE a, mais vous ne pouvez pas mélanger les deux.
QUAND when_expression
Est une simple expression qui input_expression est comparé quand le CAS simple le format utilisé. when_expression toute expression valide. Les types de données de input_expression et chaque when_expression doit être le même ou doit être une conversion implicite.
QUAND Boolean_expression
Est l'expression Booléenne évaluée lors de l'utilisation de la recherche de CAS de format. Boolean_expression est valable, toute expression Booléenne.
Vous pourriez programme:
1.
2.
Mais dans tous les cas, vous pouvez s'attendre à ce que la variable de classement va être comparé à une expression booléenne.
Voir CAS (Transact-SQL) (MSDN).
Il y a déjà beaucoup de réponses concernant
CASE
. Je vous explique quand et comment utiliserCASE
.Vous pouvez utiliser les expressions case de n'importe où dans les requêtes SQL. CAS les expressions peuvent être utilisées dans l'instruction SELECT, les clauses where, clause Order by, HAVING, Insert, UPDATE et DELETE.
Une expression case a les deux formats suivants:
CAS Simple expression
Cela se compare à une expression d'un ensemble d'expressions simples pour trouver le résultat. Cette expression compare une expression à l'expression dans chaque LORSQUE la clause d'équivalence. Si l'expression au sein de la clause when correspond, dans l'expression, dans la clause sera retourné.
C'est là que l'OP question est à la baisse.
22978 OR 23218 OR 23219
n'aura pas une valeur égale à l'expression c'est à dire l'ebv.db_no. C'est pourquoi il donne une erreur. Les types de données de input_expression et chaque when_expression doit être le même ou doit être une conversion implicite.CAS recherché expressions
Cette expression a un ensemble d'expressions booléennes pour trouver le résultat. Cette expression permet de comparer les opérateurs et les opérateurs logiques ET/OU avec dans chaque expression Booléenne.
1.SÉLECTIONNEZ l'instruction de l'AFFAIRE des expressions
2.Instruction de mise à jour de l'AFFAIRE expression
3.Clause ORDER BY avec le CAS des expressions
4.Clause Having avec le CAS de l'expression
Espère que ce cas d'utilisation d'aider quelqu'un dans le futur.
Source
Essayer
ELSE Sales
champ, qui retourne la valeur par défaut si pas d'autre inclus à l'intérieur d'une instruction du cas, appropriées pour les requêtes.table_name
= Le nom de la table sur laquelle vous souhaitez effectuer l'opération.column_name
= Le nom de la Colonne/le Champ de la valeur que vous souhaitez définir.update_value
= La valeur que vous souhaitez définir descolumn_name