Comment faire pour utiliser l'expression de cas sql avec les conditions de la recherche

Un moyen puissant pour utiliser le SQL AFFAIRE

Sommaire

l'expression est à la recherche d'une table pour les lignes dans lesquelles une condition de recherche spécifiée est vraie. Si vous utilisez AFFAIRE De cette manière, l'expression utilise la syntaxe suivante:

CASEWHEN condition1 PUIS result1WHEN condition2 PUIS result2 ... condition WHENn Alors résulternELSE résultatXFIN

AFFAIRE examine le premier qualification consécutive (la première ligne qui répond aux conditions de l'enceinte clause, le cas échéant) pour voir si condition1 est vrai. Dans ce cas, la AFFAIRE expression reçoit une valeur de result1.

Si condition1 ce n'est pas vrai, AFFAIRE évalue la ligne de condition2. Si condition2 est vrai, la AFFAIRE expression reçoit la valeur de result2, et ainsi de suite. Si aucune des conditions énoncées sont vraies, la AFFAIRE expression reçoit la valeur de RésultX.




La AUTRE clause est facultative. Si l'expression n'a pas de AUTRE clause et aucune des conditions spécifiées sont True, l'expression reçoit une valeur nulle. Après l'instruction SQL contenant le AFFAIRE expression elle-même applique à la première rangée de qualification dans un tableau et prend les mesures appropriées, il traite la rangée suivante. Cette séquence se poursuit jusqu'à ce que l'instruction SQL termine le traitement de l'ensemble du tableau.

Valeurs de mise à jour basée sur une condition

Parce que vous pouvez intégrer un AFFAIRE expression dans une instruction SQL presque partout une valeur est possible, cette expression vous donne une grande flexibilité. Tu peux utiliser AFFAIRE au sein d'une METTRE À JOUR déclaration, par exemple, de faire des changements à des valeurs de table - sur la base de certaines conditions. Prenons l'exemple suivant:

UPDATE FOODSSET RATING = CASEWHEN FAT lt; 1THEN «très faible fat'WHEN FAT lt; 5THEN «faible fat'WHEN FAT lt; 20THEN «modéré fat'WHEN FAT lt; 50THEN 'haute fat'ELSE' attaque cardiaque city'END -

Cette déclaration évalue la QUAND Conditions de l'ordonnance jusqu'à ce que la première vraie valeur est renvoyée, après quoi la déclaration ignore le reste des conditions.

Une table de base de données qui indique la teneur en matières grasses de 100 grammes de certains aliments peut contenir un COTE colonne qui donne une évaluation rapide de la signification de la teneur en matières grasses. Si vous exécutez la précédente METTRE À JOUR sur la table des aliments, l'instruction assigne une valeur de l'asperge très faible teneur en gras, donne une valeur de poulet faible en gras, et met amandes grillées dans la crise cardiaque ville catégorie.

Éviter les conditions qui causent des erreurs

Une autre utilisation des précieuses AFFAIRE est exception évitement - la vérification des conditions qui causent des erreurs.

Prenons un cas qui détermine la rémunération pour les vendeurs. Les entreprises qui compensent leurs vendeurs par la commission droite paient souvent leurs nouveaux employés en leur donnant une dessiner contre les futures commissions qu'ils devraient gagner. Dans l'exemple suivant, nouveaux vendeurs reçoivent un match nul contre mise en service le tirage au sort est éliminé progressivement que leurs commissions augmentent:

UPDATE SALES_COMPSET COMP = COMMISSION + CASEWHEN COMMISSION> DRAWTHEN 0Lorsque COMMISSION lt; DRAWTHEN DRAWEND -

Si la commission de l'agent immobilier est nulle, la structure dans cet exemple permet d'éviter une opération division par zéro, ce qui entraînerait une erreur si on les laisse se produire. Si le vendeur a une commission non nul, la rémunération totale est la commission, plus un tirage au sort qui est réduit en proportion de la taille de la Commission.

La totalité de la PUIS expressions dans un AFFAIRE expression doit être du même type - le tout numérique, tous les caractères, ou tout jour. Le résultat de la AFFAIRE expression est également du même type.


» » » » Comment faire pour utiliser l'expression de cas sql avec les conditions de la recherche