Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come risolvere "Conversione non riuscita durante la conversione del valore in tipo di dati" in SQL Server

Il messaggio di errore SQL Server 245, livello 16 indica che si è verificato un problema durante il tentativo di convertire un valore in un tipo di dati specifico.

Riceverai questo errore se provi a inserire il tipo di dati sbagliato in una colonna.

Per risolvere questo problema, assicurati che il tipo di dati del valore che stai cercando di inserire corrisponda al tipo di colonna.

Esempio di codice problema

Ecco un esempio di codice che genera questo errore.

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

Risultato:

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

In questo caso ho provato a inserire una data nel OrdersId colonna. Possiamo presumere dal messaggio di errore che questa colonna sia un int colonna, ma dovremmo verificarlo.

Se osserviamo la definizione della tabella, possiamo vedere OrderId tipo di colonna:

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

Come previsto, l'OrderId la colonna è un int colonna.

Soluzione

Per risolvere questo problema, dobbiamo assicurarci di inserire il valore corretto. Dobbiamo anche garantire che la definizione della tabella sia appropriata per i dati che deve archiviare. Ciò contribuirà a rafforzare l'integrità dei dati del nostro database.

Nel nostro caso, il tipo di dati della colonna è corretto. Il problema è stato causato dal tentativo accidentale di inserire i dati sbagliati.

Pertanto, per risolvere il problema, possiamo modificare il nostro INSERT dichiarazione per inserire i dati corretti.

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

Risultato:

(1 row affected)

Successo!