Test null/vide - explication résultat
nagaD.scar
Messages postés
4272
Date d'inscription
Statut
Membre
Dernière intervention
-
nagaD.scar Messages postés 4272 Date d'inscription Statut Membre Dernière intervention -
nagaD.scar Messages postés 4272 Date d'inscription Statut Membre Dernière intervention -
Salut à tous,
Je fais une procédure paramétré afin de récupérer des entrées dans ma base: j'ai deux paramètres d entrée pouvant être vide (pour faire simple la combinaison des deux est une clef unique, et chacun étant une clef).
Je me heurte à un soucis que je ne comprends pas : lors de test via in case/when, quand je test la chaine NULL, le test fonction :
ce test me renvoi '0', ce qui est attendu. Le problème c'est que tester à null allonge mes temps de traitement (chose d ailleurs que je ne comprends pas mais passons). Donc j'ai voulu tester la chaine vide (j ai rajouté un autre test qu avant pour checker):
Qui me renvoi à tous les coups '3' ... et veut donc dire que la chaine n est ni vide, ni non vide ...
Et si je met une valeur dans myVar (
J ai modifié le fonctionnement pour faire autrement, mais quelqu'un peut il m expliquer le pourquoi? car là je ne vois pas.
merci d avance.
Naga
Je fais une procédure paramétré afin de récupérer des entrées dans ma base: j'ai deux paramètres d entrée pouvant être vide (pour faire simple la combinaison des deux est une clef unique, et chacun étant une clef).
Je me heurte à un soucis que je ne comprends pas : lors de test via in case/when, quand je test la chaine NULL, le test fonction :
var myVar varchar2(20); exec :myVar := ''; SELECT (CASE WHEN (:myVar is null) THEN 0 WHEN (:myVar is not null) THEN 1 ELSE 2 END) res from dual END;
ce test me renvoi '0', ce qui est attendu. Le problème c'est que tester à null allonge mes temps de traitement (chose d ailleurs que je ne comprends pas mais passons). Donc j'ai voulu tester la chaine vide (j ai rajouté un autre test qu avant pour checker):
var myVar varchar2(20); exec :myVar := ''; SELECT (CASE WHEN (:myVar = '') THEN 0 WHEN (not (:myVar = '')) THEN 1 WHEN (:myVar != '') THEN 2 ELSE 3 END) res from dual END;
Qui me renvoi à tous les coups '3' ... et veut donc dire que la chaine n est ni vide, ni non vide ...
Et si je met une valeur dans myVar (
exec :myVar := 'val';) , je récupère toujours 3.
J ai modifié le fonctionnement pour faire autrement, mais quelqu'un peut il m expliquer le pourquoi? car là je ne vois pas.
merci d avance.
Naga
A voir également:
- Test null/vide - explication résultat
- Test performance pc - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
- Test steam deck oled - Guide
- Test composant pc - Guide
- Supprimer page word vide - Guide