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

Cómo corregir "Error de conversión al convertir el valor al tipo de datos" en SQL Server

El mensaje de error de SQL Server 245, nivel 16 nos dice que hubo un problema al intentar convertir un valor a un tipo de datos específico.

Obtendrá este error si intenta insertar el tipo de datos incorrecto en una columna.

Para solucionar este problema, asegúrese de que el tipo de datos del valor que intenta insertar coincida con el tipo de columna.

Ejemplo de código de problema

Este es un ejemplo de código que genera este error.

INSERT INTO Orders(OrderId, OrderDate, OrderDesc) 
VALUES ('2020-04-02', '2020-04-02', 'Dog food');

Resultado:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value '2020-04-02' to data type int.

En este caso, traté de insertar una fecha en el OrdersId columna. Podemos asumir por el mensaje de error que esta columna es un int columna, pero debemos verificar eso.

Si observamos la definición de la tabla, podemos ver el OrderId tipo de columna:

CREATE TABLE Orders (
    OrderId int NOT NULL,
    OrderDate date NOT NULL,
    OrderDesc varchar(255) NOT NULL,
    CONSTRAINT PKOrders PRIMARY KEY CLUSTERED(OrderId, OrderDate)
    );

Como era de esperar, el OrderId la columna es un int columna.

Solución

Para resolver este problema, debemos asegurarnos de que estamos insertando el valor correcto. También debemos asegurarnos de que la definición de la tabla sea adecuada para los datos que necesita almacenar. Esto ayudará a reforzar la integridad de los datos de nuestra base de datos.

En nuestro caso, el tipo de datos de la columna es correcto. El problema fue causado por un intento accidental de insertar datos incorrectos.

Por lo tanto, para solucionar el problema, podemos cambiar nuestro INSERT instrucción para insertar los datos correctos.

INSERT INTO Orders(OrderId, OrderDate, OrderDesc) 
VALUES (1, '2020-04-02', 'Dog food');

Resultado:

(1 row affected)

¡Éxito!