sql >> Database >  >> RDS >> Sqlserver

Hoe te repareren "Conversie mislukt bij het converteren van de waarde naar gegevenstype" in SQL Server

SQL Server-foutbericht 245, niveau 16 vertelt ons dat er een probleem was bij het converteren van een waarde naar een specifiek gegevenstype.

U krijgt deze foutmelding als u het verkeerde gegevenstype in een kolom probeert in te voegen.

Om dit probleem op te lossen, moet u ervoor zorgen dat het gegevenstype van de waarde die u probeert in te voegen, overeenkomt met het type van de kolom.

Voorbeeld van probleemcode

Hier is een voorbeeld van code die in deze fout resulteert.

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

Resultaat:

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

In dit geval heb ik geprobeerd een datum in te voegen in de OrdersId kolom. Aan de hand van de foutmelding kunnen we aannemen dat deze kolom een ​​int . is kolom, maar dat moeten we verifiëren.

Als we naar de tabeldefinitie kijken, zien we de OrderId kolomtype:

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

Zoals verwacht, de OrderId kolom is een int kolom.

Oplossing

Om dit probleem op te lossen, moeten we ervoor zorgen dat we de juiste waarde invoeren. We moeten er ook voor zorgen dat de tabeldefinitie geschikt is voor de gegevens die moeten worden opgeslagen. Dit helpt de gegevensintegriteit van onze database af te dwingen.

In ons geval is het gegevenstype van de kolom correct. Het probleem werd veroorzaakt door per ongeluk te proberen de verkeerde gegevens in te voeren.

Daarom kunnen we, om het probleem op te lossen, onze INSERT . wijzigen statement om de juiste gegevens in te voeren.

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

Resultaat:

(1 row affected)

Succes!


  1. Problemen oplossen met SQL Server-replicatie

  2. Bereken deciel van frequentie in MySQL

  3. n-percentielberekeningen in postgresql

  4. Is inner join hetzelfde als equi-join?