sql - ejemplo - ISNUMERIC(''07213E71'')=¿Verdadero?
isnumeric sql server ejemplo (5)
Debe asegurarse de salir de la llamada a la base de datos, sea cual sea el idioma con el que trabaje, y luego pasar el valor a la consulta. Probablemente, el SQL está entendiendo ese valor como una cadena.
SQL está detectando que la siguiente cadena es ISNUMERIC
:
''07213E71''
Creo que esto es porque la ''E'' está siendo clasificada como un símbolo matemático.
Sin embargo, debo asegurarme de que solo los valores que son enteros enteros se devuelven como Verdaderos.
¿Cómo puedo hacer esto?
En la documentación dice
ISNUMERIC devuelve 1 cuando la expresión de entrada evalúa un entero válido, número de punto flotante , dinero o tipo decimal; de lo contrario, devuelve 0. Un valor de retorno de 1 garantiza que la expresión se puede convertir a uno de estos tipos numéricos.
Su número también es flotante (con notación exponencial), por lo tanto, la única forma de tener ISINTEGER es definirlo usted mismo en SQL. Lee el siguiente enlace.
http://classicasp.aspfaq.com/general/what-is-wrong-with-isnumeric.html
Extras:
He encontrado el mismo problema. IsNumeric acepta "$, €, +, -, etc" como entradas válidas y la función Convert arroja errores debido a esto. El uso de la instrucción SQL "LIKE" solucionó mi problema. Espero que ayude a los demás
SELECT UnitCode, UnitGUID, Convert(int, UnitCode) AS IntUnitCode
FROM [NG_Data].[NG].[T_GLB_Unit]
WHERE ISNULL(UnitType,'''') <>''Department''
AND UnitCode NOT LIKE ''%[^0-9]%''
ORDER BY IntUnitCode
PD: no me culpes por usar "UnitCode" como nvarchar :) Es un viejo proyecto :)
Para nitpick: Este es un entero entero. Es equivalente a 7213 * 10 ^ 71
.
07213E71
es un número flotante 7213 con 71 ceros
Puede usar este ISNUMERIC(myValue + ''.0e0'')
para buscar enteros enteros. Ligeramente críptico pero funciona.
Otra prueba es el doble myValue NOT LIKE ''%[^0-9]%''
negativo myValue NOT LIKE ''%[^0-9]%''
que permite solo los dígitos 0 a 9.
ISNUMERIC tiene otros problemas en el sentido de que todos estos devuelven 1: +
, -
,