Đối với varchar
kiểu dữ liệu, một phần bị cắt int
sẽ được chọn *
thay vì đưa ra một lỗi (trong trường hợp này là ba chữ số không khớp với a varchar(2)
).
Điều này không xảy ra với nvarchar
Không có cách nào để thay đổi hành vi này, nó được bảo tồn để tương thích ngược. Nếu đây là một vấn đề thực sự đối với bạn, bạn có thể thêm một ràng buộc kiểm tra rằng giá trị trong cột không phải là *
nhưng tôi không thể tưởng tượng bất kỳ tình huống nào trong đó điều này thực sự đáng làm.
Giải pháp là không làm điều đó. Nếu bạn phải chèn INT
thì xác nhận nó nằm trong phạm vi -9 to 99
trước. Hoặc luôn luôn sử dụng dấu ngoặc kép xung quanh các giá trị dành cho cột chuỗi thay vì dựa vào chuyển đổi ngầm định.
integer
thay vìvarchar