El ISNUMERIC()
La función en SQL Server le permite comprobar si una expresión es numérica o no.
Sin embargo, puede haber momentos en los que obtenga resultados que no esperaba. Esto podría suceder si tiene una expresión que contiene un carácter que no es un número, pero aún así es aceptado por ISNUMERIC()
como siendo numérico.
Hay un montón de caracteres que ISNUMERIC()
acepta como numérico lo que quizás no haya considerado como numérico. Estos incluyen caracteres como más (+
), menos (-
) y los distintos símbolos de moneda. Además, dependiendo de su ubicación, la letra e
también podría permitir que toda la expresión se interprete como numérica.
Ejemplos
Estos son algunos ejemplos de lo que quiero decir:
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+];
Resultado:
+-----+-----+-----+-------+--------+-----+------+ | + | - | $ | 1e2 | 1e+2 | e | e+ | |-----+-----+-----+-------+--------+-----+------| | 1 | 1 | 1 | 1 | 1 | 0 | 0 | +-----+-----+-----+-------+--------+-----+------+
Tenga en cuenta que el e
y e+
devuelven un resultado negativo cuando están solos, pero devuelven un resultado positivo cuando están rodeados de números.
Esto probablemente se deba a que, por sí solos, no representan un número, pero cuando están rodeados de números, la expresión completa podría interpretarse como notación científica (e
y e+
se utilizan a menudo en notación científica).
Tipos de datos numéricos
Según la documentación de Microsoft, los tipos de datos que ISNUMERIC()
reconocerá como numérico incluir lo siguiente.
Números exactos
- grande
- int
- pequeño
- pequeño
- un poco
Precisión fija
- decimales
- numérico
Aproximado
- flotar
- real
Valores Monetarios
- dinero
- dinero pequeño
Además, ISNUMERIC()
devuelve 1 para algunos caracteres que no son números (como se ve en el ejemplo anterior). Esto incluye caracteres como más (+
), menos (-
), y símbolos de moneda válidos como el signo de dólar ($
).
Además, como se ve en el ejemplo, la letra e
puede afectar el resultado cuando es parte de una expresión más grande y dependiendo de su ubicación en esa expresión.