2010-04-18 88 views
8

我在寫一些考勤軟件。每位會員將有一張帶有條形碼的身份證,用於登錄活動。條形碼字段應該在我的數據庫中保存多久?我想接受Code 39和Code 128條形碼。我知道這些是可變長度代碼,那麼我應該將最大長度設置爲?條碼字段長度

謝謝!

編輯:我的客戶將使用各種第三方條碼打印工具。

回答

9

代碼128可以做128個ASCII字符,所以設置最大長度爲128(或更高,它並不重要)。

讓我澄清最後的聲明。變量文本字段將使用每個字符1個字節(或更多用於Unicode類型字段,但我們暫時忽略這些字段)以及一些開銷。根據數據庫的不同,這個開銷可能只有1-4個字節,或者多達16個或更多。

但問題是,如果你存儲在VARCHAR(128)場100個字符或VARCHAR(1000)場仍然使用的空間的完全相同的量。

您遇到的唯一問題是行限制。這也與數據庫有關。舉例來說,整個行只能佔用64K的大小,所以所有大小的總和都不能超過這個數。除此之外,這並不重要。

+8

如果我錯了,請更正我的錯誤,但是[wiki文章](http://en.wikipedia.org/wiki/Code_128)說Code 128可以編碼所有128個ASCII字符,而不是128個字符。我們的數據庫中的條形碼長度爲25個字符,我們沒有任何投訴。 – tkerwood 2013-10-25 06:31:56

+1

@tkerwood你是對的。 Code128不是字符數量的限制,而是可以編碼的字符集。這個答案的其餘部分,重新​​:數據庫中的varchar大小是正確的。 – Sean 2013-11-20 15:59:41

+1

現在有[太多懷疑](http://stackoverflow.com/questions/2660560/barcode-field-length/2660568#comment29063478_2660568)(包括我的)約128個字符的限制。因此,也許現在是時候糾正您的陳述或提供128個字符限制的來源。 – miroxlav 2015-10-09 22:27:58

4

這些格式可以很容易地編碼大量的數字,肯定比您需要的唯一ID更多。所以,這不僅僅是問題,你的ID有多久? 10位數字是多少?然後是10個字符。或者,如果它們是數字ID,則不應將其存儲爲一串字符。使用數字SQL類型。

5

在理論上的代碼128沒有限制,但是,例如,施加的規格(GS1)中的一個設置的實際限制:

GS1-128具有最大48個字符(不包括特殊字符),以及最高6.5 「(包括安靜的區域)的界限是基於以先到者爲準

來源:GS1-128 Symbol Specifications

+0

您引用的限制適用於Code 128的GS1-128應用標準,而不適用於不適用此類限制的父級符號。 – 2015-07-11 17:07:52

+1

@TerryBurton是的,但掃描一個9英尺寬的條形碼的好運氣。 – Beejor 2017-03-10 01:11:06

+0

@Beejor這是在這裏更全面的回答:http://stackoverflow.com/a/31359916/2568535 – 2017-04-19 22:51:32

-1

代碼39被限制爲43個字符全部以ASCII代碼39個符號0-9,AZ,」。「。 ,「 - 」和空格與代碼39中的表示相同。

+1

43 *不同*字母在其字母表中。與長度無關。 – 2015-07-11 17:22:29