Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách khắc phục “Chuyển đổi không thành công khi chuyển đổi giá trị thành kiểu dữ liệu” trong SQL Server

Lỗi SQL Server Msg 245, Mức 16 cho chúng tôi biết rằng đã xảy ra sự cố khi cố gắng chuyển đổi một giá trị thành một kiểu dữ liệu cụ thể.

Bạn sẽ gặp lỗi này nếu cố gắng chèn không đúng loại dữ liệu vào một cột.

Để khắc phục sự cố này, hãy đảm bảo rằng loại dữ liệu của giá trị bạn đang cố chèn, khớp với loại của cột.

Ví dụ về Mã sự cố

Dưới đây là một ví dụ về mã dẫn đến lỗi này.

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

Kết quả:

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

Trong trường hợp này, tôi đã cố gắng chèn một ngày vào OrdersId cột. Chúng tôi có thể giả định bằng thông báo lỗi rằng cột này là int nhưng chúng ta nên xác minh điều đó.

Nếu chúng ta nhìn vào định nghĩa bảng, chúng ta có thể thấy OrderId loại của cột:

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

Như mong đợi, OrderId cột là một int cột.

Giải pháp

Để giải quyết vấn đề này, chúng tôi cần đảm bảo rằng chúng tôi đang chèn giá trị chính xác. Chúng ta cũng cần đảm bảo rằng định nghĩa bảng phù hợp với dữ liệu mà nó cần lưu trữ. Điều này sẽ giúp thực thi tính toàn vẹn dữ liệu của cơ sở dữ liệu của chúng tôi.

Trong trường hợp của chúng tôi, loại dữ liệu của cột là chính xác. Sự cố do cố tình chèn sai dữ liệu.

Do đó, để khắc phục sự cố, chúng tôi có thể thay đổi INSERT của chúng tôi câu lệnh để chèn dữ liệu chính xác.

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

Kết quả:

(1 row affected)

Thành công!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để có được một danh sách các từ riêng biệt được sử dụng trong tất cả các Bản ghi Trường bằng MS SQL?

  2. Làm cách nào để tạo bảng bằng cách sử dụng truy vấn chọn trong SQL Server?

  3. Hợp nhất hai phân vùng thành một trong SQL Server (T-SQL)

  4. Hàm tách tương đương trong T-SQL?

  5. cách ly một chuỗi con trong một chuỗi trước một ký hiệu trong SQL Server 2008