sql >> Base de Datos >  >> RDS >> Sqlserver

Solucione el mensaje 8114 "Error al convertir el tipo de datos varchar a numérico" en SQL Server

Si recibe el mensaje de error 8114 de SQL Server que dice algo como Error al convertir el tipo de datos varchar a numérico , probablemente se deba a que está intentando realizar una conversión de tipo de datos que falla debido a que el valor no se puede convertir al tipo de destino.

No es porque no pueda convertir ese tipo al nuevo tipo. Es por el valor en sí mismo.

Ejemplo de error

Aquí hay un ejemplo de código que produce el error:

SELECT CAST('Ten' AS DECIMAL(5,2));

Resultado:

Msg 8114, Level 16, State 5, Line 1
Error converting data type varchar to numeric.

Este error ocurrió porque SQL Server no pudo convertir el valor de cadena a decimal.

Solución 1

Para solucionar esto, debe asegurarse de proporcionar un valor que SQL Server pueda convertir.

Si está pasando una columna, compruebe que tiene la columna correcta. Lo mismo si está pasando una variable:verifique que sea la variable correcta.

Tenga en cuenta que esto podría no suceder en todos los casos de tratar de convertir una cadena a decimal, porque algunos valores de cadena se pueden convertir.

Por ejemplo, la siguiente conversión se realiza correctamente:

SELECT CAST('10' AS DECIMAL(5,2));

Resultado:

10.00

Aquí, SQL Server pudo calcular que 10 es un número y, por lo tanto, la conversión se realizó correctamente.

Solución 2

Si no le importa que la conversión falle, pero no quiere que devuelva un error, pruebe TRY_CAST() o TRY_CONVERT() funciones.

En lugar de devolver un error, estas funciones devuelven NULL cuando el valor no se puede convertir.

Ejemplo:

SELECT TRY_CAST('Ten' AS DECIMAL(5,2));

Resultado:

NULL