2010-04-18 41 views
8

Tôi đang viết một số phần mềm chấm công. Mỗi thành viên sẽ có một thẻ ID với mã vạch mà họ sẽ sử dụng để đăng nhập vào các sự kiện. Trường mã vạch phải nằm trong cơ sở dữ liệu của tôi trong bao lâu? Tôi muốn chấp nhận mã vạch Code 39 và Code 128. Tôi biết đây là các mã có độ dài thay đổi, vì vậy tôi nên đặt độ dài tối đa là bao nhiêu?Độ dài trường mã vạch

Cảm ơn!

EDIT: Khách hàng của tôi sẽ sử dụng nhiều công cụ in mã vạch của bên thứ ba khác nhau.

Trả lời

9

Mã 128 có thể thực hiện 128 ký tự ASCII để đặt độ dài tối đa thành 128 (hoặc cao hơn, nó không thực sự quan trọng).

Hãy để tôi làm rõ tuyên bố cuối cùng. Các trường văn bản biến đổi sẽ sử dụng 1 byte cho mỗi ký tự (hoặc nhiều hơn cho các trường kiểu Unicode nhưng chúng ta hãy bỏ qua những trường đó ngay bây giờ) cộng với một số chi phí. Chi phí trên có thể chỉ bằng 1-4 byte hoặc nhiều nhất là 16 hoặc nhiều hơn tùy thuộc vào cơ sở dữ liệu.

Nhưng vấn đề là nếu bạn lưu trữ 100 ký tự trong trường VARCHAR(128) hoặc trường VARCHAR(1000), nó vẫn sử dụng số tiền chính xác chính xác.

Vấn đề duy nhất bạn gặp phải là giới hạn hàng. Điều này cũng phụ thuộc vào cơ sở dữ liệu. Trên một số ví dụ, toàn bộ hàng chỉ có thể mất đến 64K kích thước để tổng của tất cả các kích thước không thể vượt quá điều đó. Khác hơn là nó không quan trọng.

+8

Sửa tôi nếu tôi sai, nhưng [bài viết wiki] này (http://en.wikipedia.org/wiki/Code_128) nói rằng Mã 128 có thể mã hóa tất cả 128 ký tự ascii, không phải là 128 ký tự . Mã vạch trong DB của chúng tôi dài 25 ký tự và chúng tôi không có bất kỳ khiếu nại nào. – tkerwood

+1

@tkerwood bạn nói đúng. Code128 không phải là giới hạn về số ký tự, nhưng là bộ ký tự có thể được mã hóa. Phần còn lại của câu trả lời này, lại: kích thước varchar trong cơ sở dữ liệu là chính xác. – Sean

+1

Bây giờ có [quá nhiều nghi ngờ] (http://stackoverflow.com/questions/2660560/barcode-field-length/2660568#comment29063478_2660568) (bao gồm cả của tôi) về giới hạn 128 ký tự. Vì vậy, có lẽ đã đến lúc sửa lại tuyên bố của bạn hoặc cung cấp nguồn cho giới hạn 128 ký tự đó. – miroxlav

4

Các định dạng này có thể dễ dàng mã hóa nhiều chữ số, chắc chắn nhiều hơn mức bạn cần cho một ID duy nhất. Vì vậy, không phải là câu hỏi đơn thuần, ID của bạn dài bao lâu? 10 chữ số có nhiều không? sau đó 10 ký tự. Hoặc nếu chúng là ID số, ​​bạn thậm chí không nên lưu trữ dưới dạng chuỗi ký tự. Sử dụng một kiểu SQL số.

5

Không hạn chế về Mã số 128 trên lý thuyết, nhưng ví dụ, một trong những thông số kỹ thuật ứng dụng (GS1) thiết lập giới hạn thực hiện:

GS1-128 có tối đa 48 ký tự (không bao gồm ký tự đặc biệt) HOẶC tối đa là 6,5 "(bao gồm cả khu vực yên tĩnh) Giới hạn dựa trên điều kiện nào đến trước

Nguồn:.. GS1-128 Symbol Specifications

+0

Các giới hạn mà bạn giới thiệu áp dụng cho tiêu chuẩn ứng dụng GS1-128 cho Mã 128 thay vì mã vạch gốc không áp dụng các ràng buộc như vậy. –

+1

@TerryBurton Vâng, nhưng may mắn quét mã vạch rộng 9-foot. – Beejor

+0

@Beejor Điều này được trả lời toàn diện hơn ở đây: http://stackoverflow.com/a/31359916/2568535 –

-1

Mã 39 được giới hạn trong 43 ký tự Trong Full Mã ASCII 39 Biểu tượng 0-9, AZ,"." , "-" và không gian giống như biểu diễn của chúng trong Mã 39.

+1

43 * các ký tự * khác nhau trong bảng chữ cái của nó. Không liên quan đến độ dài. –

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