Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да коригирате „Преобразуването не бе успешно при преобразуване на стойността в тип данни“ в SQL Server

Грешка на SQL Server Msg 245, ниво 16 ни казва, че е имало проблем при опит за преобразуване на стойност в конкретен тип данни.

Ще получите тази грешка, ако се опитате да вмъкнете грешен тип данни в колона.

За да отстраните този проблем, уверете се, че типът данни на стойността, която се опитвате да вмъкнете, съвпада с типа на колоната.

Пример за код на проблем

Ето пример за код, който води до тази грешка.

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

Резултат:

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

В този случай се опитах да вмъкна дата в OrdersId колона. По съобщението за грешка можем да предположим, че тази колона е int колона, но трябва да проверим това.

Ако погледнем дефиницията на таблицата, можем да видим OrderId тип колона:

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

Както се очакваше, OrderId колоната е int колона.

Решение

За да разрешим този проблем, трябва да се уверим, че вмъкваме правилната стойност. Също така трябва да гарантираме, че дефиницията на таблицата е подходяща за данните, които трябва да съхранява. Това ще помогне за налагането на целостта на данните на нашата база данни.

В нашия случай типът данни на колоната е правилен. Проблемът е причинен от случаен опит за въвеждане на грешни данни.

Следователно, за да отстраним проблема, можем да променим нашия INSERT изявление, за да вмъкнете правилните данни.

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

Резултат:

(1 row affected)

Успех!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Кой е най-добрият инструмент за сравняване на две бази данни на SQL Server (схема и данни)?

  2. Как да коригирате „Отказът на ALTER TABLE SWITCH е неуспешен“ Msg 4982 (SQL Server)

  3. Как да създам съхранена процедура, която по избор ще търси колони?

  4. Как да генерирате скриптове за повторно създаване на ограничения за външни ключове в база данни на SQL Server - SQL Server / TSQL Урок, част 73

  5. Какъв е низът за sql връзка, който трябва да използвам за достъп до localhost\SQLEXPRESS с удостоверяване на Windows или SQL удостоверяване?