À l'aide de décoder pour vérifier les valeurs positives et négatives
Salut est-il possible d'utiliser décoder pour vérifier les valeurs positives et négatives dans sql?
par exemple
select decode(money_return, **<0**, abs(money_return), **>0**,
money_return*10, money_return) from cash_t;
si la logique est codée dans une instruction if else, il sera quelque chose comme ceci:
if(money_return<0){money_reutrn = abs(money_return);}
else if(money_return>0){money_reutrn = money_return*10;}
else {money_return = money_return;}
end
Merci.
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'instruction de cas
Vous pouvez utiliser le "signe" avec une décoder. Signe sera de retour -1 pour tout négatif, 0 pour 0, et 1 pour tout positif:
Vous pouvez l'utiliser comme cela,
Ci-dessus décoder instruction est équivalente à la suivante if-then-ELSE:
De sorte que votre code final doit être quelque chose comme cela,
- Je utiliser la fonction "plus" et "moins" trouvé des valeurs Positives ou Négatives de la valeur.
exemple.
ou
remercier
Utiliser le SIGNE(). Elle renvoie la valeur "0", 0, "1" pour le positif et "-1" pour les valeurs négatives.
Si c'est la seule formule que vous utilisez, vous pouvez faire:
SQL Violon pour vérifier les résultats.
Maintenant, c'est très, très fragile, et ne fonctionnera pas si les changements de scénario.
case
code en production. C'est beaucoup plus clair et plus facile à gérer.Si la valeur est positive, la déduction elle-même sera de retour 0 et la première condition sera appliqué. Autre chose, il est négatif et que la deuxième condition est appliquée. 0 à tenir dans la première condition et retourner la valeur 0 (0*10).