2009-01-09 85 views
8

Khi tôi chèn bản ghi vào bảng dài, tôi nhận được lỗi "Chuyển đổi không thành công khi chuyển đổi giá trị varchar 'NULL' thành kiểu dữ liệu int" Làm cách nào để xác định lỗi nào của cột?"Chuyển đổi không thành công khi chuyển đổi giá trị varchar 'NULL' thành kiểu dữ liệu int"

Bảng có nhiều trường và hàng triệu bản ghi. Mỗi lần lặp mất 10 phút để ném bom khi tôi cố gắng chèn chuỗi "NULL" vào cột số nguyên ở đâu đó. Tôi nghĩ máy chủ SQL có thể cho tôi biết tên chính xác của cột: (

+0

Bạn có ý nghĩa gì với bảng dài và bạn có thể hiển thị SQL đang gây ra sự cố không? – wcm

+0

Bạn gặp lỗi này ở đâu. Bạn có đang chạy một tập lệnh từ Trình phân tích truy vấn hay là nó phát ra từ cuộc gọi executeScalar trong ứng dụng dotNet. Khi chúng tôi biết điều này, có thể chúng tôi có thể đưa ra một số đề xuất tốt hơn về cách giải quyết vấn đề này. – wcm

Trả lời

2

Bắt đầu công cụ nhận xét từng câu một cho đến khi nó ngừng đánh bom. Hoặc, hãy xem và xem giá trị nào bạn đang chuyển là NULL cho cột int .

+0

Tôi đồng ý, không thanh lịch hoặc hiệu quả nhất, nhưng đó là cách tôi làm. –

2

bạn cần phải sửa chữa các dữ liệu hoặc có thể bạn chỉ cần chuyển đổi null 0 cho rằng chèn?

Nếu bạn chỉ có thể chuyển đổi, bạn có thể quấn varchars của bạn mà đang nhận được chuyển đổi với một chức năng ISNULL. chỉ cần đặt sau đây xung quanh bất kỳ giá trị nào được chèn vào các trường int.

ISNULL(col1,0) 
12

Nếu giá trị thực sự là NULL, sẽ không có lỗi chuyển đổi. Tuy nhiên, bạn có một chuỗi = "NULL" sau đó bạn sẽ nhận được lỗi này.

gì bạn có thể làm là ...

NullIf(YourValueHere, 'NULL') 

NullIf trả về giá trị của tham số đầu tiên nếu nó không phải là giống như tham số thứ hai. Nếu các thông số giống nhau, NullIf sẽ trả lại NULL.

Ex:

Select NullIf('Any Value', 'NULL') 

Select NullIf('null','null') 

Đầu tiên sẽ trở lại 'Bất kỳ Giá trị' và thứ hai sẽ trở lại NULL (không phải là 'null')

3

Thực tế là nó đề cập đến "các varchar giá trị 'NULL '' chỉ ra rằng bạn đang cố gắng đặt giá trị của cột thành chuỗi "NULL" thay vì giá trị NULL.

Nhìn vào tuyên bố của bạn cho từ NULL được bao quanh bởi dấu ngoặc kép. Bạn sẽ cần xóa các dấu ngoặc kép này.

Các vấn đề liên quan