Comment pouvez-vous dire si une valeur n'est pas numérique dans Oracle?
J'ai le code suivant qui renvoie un message d'erreur si ma valeur n'est pas valide. Je voudrais donner le même message d'erreur si la valeur n'est pas numérique.
IF(option_id = 0021) THEN
IF((value<10000) or (value>7200000) or /* Numeric Check */)THEN
ip_msg(6214,option_name); -- Error Message
return;
END IF;
END IF;
Dans SQL Server, j'ai simplement utilisé ISNUMERIC()
. Je voudrais faire quelque chose de similaire dans Oracle. Tels que,
IF((!ISNUMERIC(value)) or (value<10000) or (value>7200000))
THEN ...
source d'informationauteur Kyle Williamson
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de fonction intégrée. Vous pourriez écrire un
et/ou
Vous pouvez ensuite faire
retourne TRUE si la colonne ne contient que des caractères numériques
De
Oracle DB 12c Release 2
vous pouvez utiliser VALIDATE_CONVERSION fonction:Vous pouvez utiliser l'expression régulière suivante qui va correspondre à des nombres entiers (par exemple,
123
), les nombres à virgule flottante (12.3
), et les nombres avec des exposants (1.2e3
):Si vous souhaitez accepter
+
signes ainsi que-
signes (comme Oracle ne avecTO_NUMBER()
), vous pouvez remplacer chaque occurrence de-
ci-dessus pour[+-]
. Donc, vous pouvez réécrire votre bloc de code ci-dessus comme suit:Je ne suis pas certain qu'serait en mesure de gérer toutes les valeurs de sorte que vous voudrez peut-être ajouter un
EXCEPTION
bloquer ou d'écrire une coutumeto_number()
fonction @JustinCave suggère.