2016-10-24 119 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