JavaDerby:如何通过记录访问数据库reocrd

JavaDerby:如何通过记录访问数据库reocrd,java,derby,Java,Derby,我有一个超过20000000行的数据。我想将一列(将数字存储为字符串)转换为十进制格式,以便搜索速度更快 但是,如果我尝试通过Java将数据加载到resultset中,则resultset崩溃或显示Java堆内存错误 有没有办法修改每条记录,以便字符串值可以转换并保存为新列中的十进制值?您应该将Java从等式中去掉——原始SQL可以做到这一点。最好的方法是添加一个新列,将新列设置为现有字符串列的十进制转换值,然后(如果愿意)删除旧字符串列并重命名新列 例如,如果您使用的是MySQL,这将类似于:

我有一个超过20000000行的数据。我想将一列(将数字存储为字符串)转换为十进制格式,以便搜索速度更快

但是,如果我尝试通过Java将数据加载到resultset中,则resultset崩溃或显示Java堆内存错误


有没有办法修改每条记录,以便字符串值可以转换并保存为新列中的十进制值?

您应该将Java从等式中去掉——原始SQL可以做到这一点。最好的方法是添加一个新列,将新列设置为现有字符串列的十进制转换值,然后(如果愿意)删除旧字符串列并重命名新列

例如,如果您使用的是MySQL,这将类似于:

ALTER TABLE mytable
  ADD COLUMN newcolumn DECIMAL(10,2);

UPDATE mytable
   SET newcolumn = CAST(oldcolumn AS DECIMAL(10,2))
 WHERE true;

ALTER TABLE mytable
 DROP COLUMN oldcolumn,
 CHANGE newcolumn oldcolumn DECIMAL(10,2);

在Derby中,最后一条语句是两条语句:一条用于删除列,另一条用于将newcolumn重命名为oldcolumn。但是除了轻微的语法差异,这种方法在Derby中也非常有效!