Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como corrigir “Falha na conversão ao converter o valor em tipo de dados” no SQL Server


Erro do SQL Server Msg 245, Level 16 nos informa que houve um problema ao tentar converter um valor em um tipo de dados específico.

Você receberá esse erro se tentar inserir o tipo de dados errado em uma coluna.

Para corrigir esse problema, verifique se o tipo de dados do valor que você está tentando inserir corresponde ao tipo da coluna.

Exemplo de código de problema


Aqui está um exemplo de código que resulta nesse erro.
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.

Neste caso tentei inserir uma data no OrdersId coluna. Podemos supor pela mensagem de erro que esta coluna é um int coluna, mas devemos verificar isso.

Se olharmos para a definição da tabela, podemos ver o OrderId tipo de coluna:
CREATE TABLE Orders (
    OrderId int NOT NULL,
    OrderDate date NOT NULL,
    OrderDesc varchar(255) NOT NULL,
    CONSTRAINT PKOrders PRIMARY KEY CLUSTERED(OrderId, OrderDate)
    );

Como esperado, o OrderId coluna é um int coluna.

Solução


Para resolver esse problema, precisamos ter certeza de que estamos inserindo o valor correto. Também precisamos garantir que a definição da tabela seja apropriada para os dados que ela precisa armazenar. Isso ajudará a reforçar a integridade dos dados do nosso banco de dados.

No nosso caso, o tipo de dados da coluna está correto. O problema foi causado pela tentativa acidental de inserir os dados errados.

Portanto, para corrigir o problema, podemos alterar nosso INSERT instrução para inserir os dados corretos.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc) 
VALUES (1, '2020-04-02', 'Dog food');

Resultado:
(1 row affected)

Sucesso!