2013-07-22 46 views
10

Sau khi sử dụng rất nhiều SQL ServerSQL Server Compact, gần đây tôi đã bắt đầu sử dụng Sqlite. Tôi hiện đang tạo ra các bảng trong Sqlite và đã nhận thấy rằng có vẻ như không có bất kỳ cần phải nhập vào giới hạn độ dài chuỗi khi xác định cột chuỗi. Trong SQL Server kiểu dữ liệu chuỗi 255 ký tự được định nghĩa như: varchar(255). Trong SQL Server Compact, nó được định nghĩa là: nvarchar(255).Kích thước lưu trữ chuỗi trong sqlite

Tuy nhiên, trong Sqlite, có vẻ như kiểu dữ liệu cột có thể được định nghĩa đơn giản là text, mà không cần nhập bất kỳ giới hạn kích thước nào. Có cách nào để xác định giới hạn kích thước trong sqlite không? Hay điều này thậm chí không cần thiết?

+1

Bạn không cần phải xác định độ dài cột chuỗi, nhưng bạn có thể (xem [cú pháp] (http://www.sqlite.org/syntaxdiagrams.html#type-name)). Tuy nhiên, không giống như các triển khai DB khác, các vùng kích thước cố định không được phân bổ cho các cột, mà là các hàng được xây dựng giống như các danh sách các đối tượng. Vì vậy, không có "hình phạt" cho việc có một cột rộng được sử dụng chủ yếu cho các giá trị hẹp. –

Trả lời

6

Có giới hạn chuỗi hoặc blob có thể quản lý trong SQLite. Giá trị mặc định là 10^9 byte. See documentation BTW bạn không cần phải chỉ định nó trên khai báo cột.

9

SQLite cho phép bạn viết VARCHAR(255) hoặc NVARCHAR(255), nhưng phần liên quan duy nhất trong số đó là CHAR (cung cấp cho cột "sở thích văn bản"). Số trong ngoặc đơn được phép tương thích với SQL chuẩn, nhưng bị bỏ qua.

Trong SQLite, có ít cần cho các ràng buộc về độ dài trên chuỗi, vì (1) nó không ảnh hưởng đến khoảng trống chuỗi chiếm trên đĩa và (2) không có giới hạn tùy ý (ngoại trừ SQLITE_MAX_LENGTH) trên độ dài của chuỗi có thể được sử dụng trong một INDEX.

Nếu bạn có nhu cầu thực tế để đặt giới hạn về số lượng ký tự trong một cột, chỉ cần thêm một ràng buộc như CHECK(LENGTH(TheColumn) <= 255).

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