Le ISNUMERIC()
La fonction dans SQL Server vous permet de vérifier si une expression est numérique ou non.
Cependant, il peut arriver que vous obteniez des résultats auxquels vous ne vous attendiez pas. Cela peut arriver si vous avez une expression qui contient un caractère qui n'est pas un nombre, mais qui est toujours accepté par ISNUMERIC()
comme étant numérique.
Il y a un tas de caractères qui ISNUMERIC()
accepte comme numérique ce que vous n'auriez peut-être pas pensé comme numérique. Ceux-ci incluent des caractères tels que plus (+
), moins (-
) et les différents symboles monétaires. Aussi, selon son emplacement, la lettre e
pourrait également permettre à l'expression entière d'être interprétée comme numérique.
Exemples
Voici quelques exemples de ce que je veux dire :
SELECT ISNUMERIC('+') AS [+], ISNUMERIC('-') AS [-], ISNUMERIC('$') AS [$], ISNUMERIC('1e2') AS [1e2], ISNUMERIC('1e+2') AS [1e+2], ISNUMERIC('e') AS [e], ISNUMERIC('e+') AS [e+];
Résultat :
+-----+-----+-----+-------+--------+-----+------+ | + | - | $ | 1e2 | 1e+2 | e | e+ | |-----+-----+-----+-------+--------+-----+------| | 1 | 1 | 1 | 1 | 1 | 0 | 0 | +-----+-----+-----+-------+--------+-----+------+
Notez que le e
et e+
renvoient un résultat négatif lorsqu'ils sont seuls, mais renvoient un résultat positif lorsqu'ils sont entourés de chiffres.
C'est probablement parce que, seuls, ils ne représentent pas un nombre, mais lorsqu'ils sont entourés de nombres, l'expression entière pourrait être interprétée comme une notation scientifique (e
et e+
sont souvent utilisés en notation scientifique).
Types de données numériques
Selon la documentation Microsoft, les types de données qui ISNUMERIC()
reconnaîtra comme numérique les éléments suivants.
Chiffres exacts
- bigint
- entier
- smallint
- minuscule
- bit
Précision fixe
- décimal
- numérique
Approximatif
- flotter
- réel
Valeurs monétaires
- l'argent
- petite monnaie
De plus, ISNUMERIC()
renvoie 1 pour certains caractères qui ne sont pas des nombres (comme dans l'exemple ci-dessus). Cela inclut des caractères tels que plus (+
), moins (-
) et des symboles monétaires valides tels que le signe dollar ($
).
Aussi, comme on le voit dans l'exemple, la lettre e
peut affecter le résultat lorsqu'il fait partie d'une expression plus grande, et selon son emplacement dans cette expression.