将字符串变量转换为数字代表并将字符串存储在别处?

时间:2014-10-02 13:33:21

标签: sql ms-access ms-access-2010

我不知道描述问题的最佳方式,我只是在寻找正确的方向,或者从哪里开始。 我非常满意答案,这是一个非常有用的链接或伪代码。

我的问题是,我有一个即将达到MS Access硬编码2 GB数据库限制的数据库,而且我不想拆分数据库。

我认为可能的解决方案 - 使数据库在数据存储方面更有效率。我想,但不知道这是否属实,我可以通过将一些字符串字段转换为数字字段来实现。和我在一起......

例如:

  • 我的数据库有几百万个字段记录,我们将调用TooLongString
  • 每个值约为50个字符
  • 每个记录都有此字段的值
  • TooLongString
  • 只有9个可能的值
  • 是否会减少我的数据库大小而不是存储一个数字 表示9个可能值中的一个,并将文本值存储在一个小表中? (所以从50个字符到1个字符数百万次)

我是否正确解释了我的问题?我的潜在解决方案实际上是解决方案我该怎么做呢?

谢谢!

1 个答案:

答案 0 :(得分:2)

简短的回答是肯定的,这会减少数据库的大小。您可以拥有第二个表,其中包含" TooLongString"的三个可能值。并按照您的建议将相应答案的ID存储在主表中。然后,您需要在拉出数据时加入这些表,以便检索实际文本而不是ID。

我会首先设置您的新表,然后将ID的新列添加到现有表中。由于只有九个可能的值,我很想手动运行一次UPDATE查询九次,例如如果新表中的第一个字符串是" MyFirstString"使用ID 1,您可以运行" UPDATE existingTableName SET newColumn = 1 WHERE oldColumn =' MyFirstString'"。对九个值中的每一个执行此操作,然后您可以从表中删除旧的字符串列。