Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak naprawić „Konwersja nie powiodła się podczas konwersji wartości na typ danych” w SQL Server

Komunikat o błędzie SQL Server 245, poziom 16 informuje nas, że wystąpił problem podczas próby konwersji wartości na określony typ danych.

Otrzymasz ten błąd, jeśli spróbujesz wstawić niewłaściwy typ danych do kolumny.

Aby rozwiązać ten problem, upewnij się, że typ danych wartości, którą próbujesz wstawić, odpowiada typowi kolumny.

Przykład kodu problemu

Oto przykład kodu, który powoduje ten błąd.

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

Wynik:

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

W tym przypadku próbowałem wstawić datę do OrdersId kolumna. Na podstawie komunikatu o błędzie możemy założyć, że ta kolumna to int kolumna, ale powinniśmy to sprawdzić.

Jeśli spojrzymy na definicję tabeli, zobaczymy OrderId typ kolumny:

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

Zgodnie z oczekiwaniami OrderId kolumna to int kolumna.

Rozwiązanie

Aby rozwiązać ten problem, musimy upewnić się, że wstawiamy prawidłową wartość. Musimy również upewnić się, że definicja tabeli jest odpowiednia dla danych, które ma przechowywać. Pomoże to wymusić integralność danych w naszej bazie danych.

W naszym przypadku typ danych kolumny jest poprawny. Problem został spowodowany przypadkową próbą wpisania niewłaściwych danych.

Dlatego, aby rozwiązać ten problem, możemy zmienić nasz INSERT oświadczenie, aby wstawić prawidłowe dane.

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

Wynik:

(1 row affected)

Sukces!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć z bazy danych datę i godzinę, która może mieć wartość null

  2. Jak naprawić „Lista wyboru dla instrukcji INSERT zawiera mniej elementów niż lista wstawiania”

  3. Jak połączyć się z MS SQL Server za pomocą Inno Setup?

  4. SQL Server 2016:Przywracanie bazy danych

  5. Jak uzyskać listę wszystkich ograniczeń sprawdzających w bazie danych SQL Server — samouczek SQL Server / TSQL część 85?