2016-10-24 176 views
-1

有效的辦法目前,我有一個表具有以下格式/說明:存儲文件路徑

ColumnName ColID PK IndexPos Null DataType 
ID   1     1 N  VARCHAR2 (1 Byte) 
FILEPATH 2      N  VARCHAR2 (127 Byte) 

正如你可以看到ID列的長度僅1字節,我們只能存儲36個不同的文件路徑。我有超過35個不同的文件路徑需要存儲和檢索。我知道增加ID的長度解決了這個問題,但我想知道/建議是否有任何有效的方法來處理這個問題。

謝謝!

+0

您可以在一個字節中存儲256個值。你從哪裏得到35?這裏「有效」的意思是什麼?如果ID是合成的(看起來好像是),爲什麼你選擇了這種數據類型而不是數字? –

+0

@AlexPoole [A-Z&0-9 = 36],它是如何256? 或者可能是我描述錯了。一個文件路徑將具有不同的/唯一的ID,這將有助於檢索數據。 EX:從XXX表中選擇ID ='A';的文件路徑。因此,程序會查看該路徑並選擇該文件。 – Developer

+0

這些是字母數字字符;它們是可以使用的字節值的一小部分。 [128個ASCII字符](http://www.asciitable.com/)都適合一個字節(有一點需要注意!)。即使你只限於可打印的字符(你沒有提到),它的數量超過了36; ASCII值0x20到0x7e都是可打印的...如果您受到限制,則需要更多字節或不同的數據類型。你還沒有說過對你有什麼「高效」的含義。 –

回答

1

您可以在表格中只存儲35個不同值的說法不正確,因爲varchar2字符不限於字母和數字(即使它們是26個字母+ 10個數字+ 1個空字符串= 37 ,而不是35種可能性)。

如果你需要存儲更少的路徑,比如40或50,你可以使你的密鑰混合使用,所以'a''A'會引用不同的路徑。這會立即給你26個額外的可能性。

擴展超過63的限制有點困難,因爲您需要將特殊字符添加到組合中。但是,單個字符的理論最大值是256加空字符串的組合。

+0

哇:)很好的解釋。所以,即使沒有做任何事情,我可以採取256加一個組合空字符串。感謝您的信息,我不得不重新考慮它。但是,你認爲只是增加長度將是一個好方法,而不是使用特殊字符嗎? – Developer

+0

@Developer我會選擇雙字符固定長度代碼,因爲一旦遇到區分大小寫和不可打印的字符,手動運行和解釋數據庫查詢變得更困難。 – dasblinkenlight

+0

明白了,感謝您的建議/幫助。 – Developer