7

Khi tôi lưu dữ liệu vào một bảng, các khoảng trống thừa sẽ được thêm vào giá trị ở đuôi. Tôi quan sát thấy rằng chiều dài cột là 5, nếu tôi chèn một giá trị có độ dài 3 char, thêm 2 khoảng trống sẽ được thêm vào. Có thể làm cách nào để giải quyết vấn đề này.Không gian thêm được thêm vào đuôi ở cột

+0

Vui lòng cung cấp câu lệnh chèn và định nghĩa bảng. –

Trả lời

21

Loại cột CHAR(5) thay vì VARCHAR(5)?

  • CHAR(x) tạo cột luôn lưu trữ ký tự x và đệm dữ liệu bằng dấu cách.
  • VARCHAR(x) tạo cột thay đổi độ dài của chuỗi để khớp với dữ liệu được chèn.
+2

+1 varchar vẫn có thể có dấu cách wth SET ANSI_PADDING ON mặc dù – gbn

+0

@gbn Tôi chưa bao giờ tìm kiếm những gì mà thiết lập thực sự làm; Cảm ơn đã khiến tôi nghiên cứu nó. Nếu tôi hiểu tài liệu chính xác, ngay cả với ANSI_PADDING ON, cột VARCHAR (x) sẽ chỉ chứa dấu cách nếu bạn đặt chúng ở đó một cách rõ ràng. –

+0

Đúng, nhưng nó có thể gây ra [nhầm lẫn] (http://stackoverflow.com/search?q=user%3A27535+ansi_padding) Đặc biệt là khi nó sẽ được BẬT trong các phiên bản sau này. – gbn

4

Đây là tài sản của CHAR loại dữ liệu. Nếu bạn không muốn có thêm không gian, bạn cần sử dụng VARCHAR mặc dù cho một trường nhỏ có chi phí tối thiểu so với tiêu chuẩn CHAR. Có nói rằng, người ta tin rằng VARCHAR ngày nay là tốt như CHAR.

0

Biến CHAR sẽ lưu trữ vùng đệm thừa này, có thể bạn cần sử dụng biến VARCHAR2 thay thế?

+0

Không có VARCHAR2 trong SQL Server ... – gbn

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