Bonsoir,
Je souhaite de réaliser une division si le dénominateur est non nul. Je tente une forme du genre
CASE WHEN dénominateur IS NULL THEN '' ELSE numérateur / dénominateur END
et j’obtiens une erreur Wrong data type: java.lang.NumberFormatException in statement
-
numérateur et dénominateur sont du type DECIMAL(100,2)
-
les deux simplifications de la requête ci-dessus fonctionnent bien, que ce soit
SELECT CASE WHEN dénominateur IS NULL THEN '' ELSE 'Toto' END
ou SELECT numérateur / dénominateur
Merci d’avance pour votre aide.
EDITION du 27/12 :
Bonjour,
Merci Sébastien, remplacer THEN ‘’ par THEN NULL fonctionne, sans que je comprenne pourquoi.
Merci Pierre-Yves. Remplacer THEN “” par THEN ‘vide’ provoque l’erreur Wrong data type: java.lang.NumberFormatException: Character v is neither a decimal digit number, decimal point, nor “e” notation exponential mark. in statement [SELECT…
Ceci explique peut-être pourquoi remplacer THEN ‘’ par THEN NULL fonctionne : CASE demanderait à conserver le même type de donnée pour les valeurs de sortie que celui des données d’entrée. Ici numérateur est un nombre donc demander une chaîne vide en résultat du CASE provoquerait l’erreur.
Distinguer le cas où numérateur est non renseigné de celui où il est nul n’aide pas.
Merci encore à tous les deux. Cordialement Michel