ISNUMERIC |
Est-ce numérique ? |
|---|---|
| SQL Server | Microsoft SQL Server |
Syntaxe
| ISNUMERIC(expression) |
Paramètres
| Nom | Description |
|---|---|
| expression | Ce paramètre permet d'indiquer l'expression contenant le nombre à traiter |
Description
Cette fonction permet d'indiquer, si l'expression spécifié, est une valeur numérique.
Remarques
- Retourne un booléen (sous forme d'entier) : ISNUMERIC retourne 1 si l'expression peut être évaluée comme un nombre, sinon 0. Ce test est utile pour éviter des erreurs lors de conversions de chaînes vers des types numériques. Cependant, le retour est de type bit ou int (1 ou 0), et non un type booléen au sens strict.
- Accepte plusieurs types de formats numériques : La fonction considère comme numériques les entiers, les décimaux, les flottants, mais aussi certains cas particuliers comme les notations scientifiques (ex. '1e4'). Cela peut surprendre, car certaines chaînes contenant des caractères inhabituels (comme le point décimal ou le signe plus) peuvent malgré tout être validées.
- Résultat parfois inattendu (ex. '1d2', '$',...) : ISNUMERIC peut retourner 1 pour des expressions que vous ne considérez pas toujours comme des nombres, comme '$' ou '+', car SQL Server considère ces symboles comme faisant partie d'un format numérique valide dans certains contextes. Cela peut entraîner des faux positifs.
- Peut valider les valeurs monétaires : Des chaînes représentant des montants monétaires, comme '$100' ou '€100', peuvent parfois être validées par ISNUMERIC, car SQL Server les reconnaît comme des expressions convertibles vers des types comme money ou smallmoney. Ce comportement dépend des paramètres régionaux.
- Utilité dans les conversions conditionnelles : ISNUMERIC est fréquemment utilisé pour tester une colonne ou une chaîne de caractères avant de la convertir avec CAST() ou CONVERT(). Cela permet d'éviter des erreurs d'exécution en filtrant les lignes où la conversion échouerait.
- Comportement affecté par les paramètres régionaux (locale) : Le résultat peut varier selon la configuration régionale du serveur SQL, notamment en ce qui concerne l'interprétation de la virgule décimale (, vs .) ou les séparateurs de milliers. Il est donc important d'en tenir compte lorsqu'on travaille avec des systèmes multilingues.
- Alternative moderne : TRY_CAST ou TRY_CONVERT : Dans les versions récentes de SQL Server, TRY_CAST et TRY_CONVERT sont préférables, car ils permettent de tenter une conversion et retournent NULL en cas d'échec, sans erreur bloquante. Ces alternatives permettent des tests plus sûrs que ISNUMERIC, pouvant donner des résultats imprécis.
- Limites avec les types non standards : ISNUMERIC ne fonctionne pas correctement pour des formats personnalisés comme les numéros de téléphone, codes postaux ou chaînes contenant des espaces, même si ces données sont uniquement composées de chiffres. Il ne distingue pas les nombres purs des formats spécifiques, et ne garantit pas la validité logique.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
on obtiendra le résultat suivant :
| Text | Result |
| -1 | 1 |
| 25 | 1 |
| 3/21/11 | 0 |
| GETDATE() | 0 |
| Gladir.com | 0 |
Voir également
Articles - Les géants de l'informatique - Microsoft
Dernière mise à jour : Dimanche, le 7 juin 2015