用Java对SQL查询结果进行排序

用Java对SQL查询结果进行排序,java,sql,Java,Sql,首先,我很抱歉在这里放了一些大的文字 下面是在Java中执行SQL查询的结果,但我希望它使用时间戳将其缩短 例如,下面第1行文本中的时间戳是-040501(HH:mm:ss)(与wise一样,所有数据都包含时间戳)(应使用时间戳参数进行排序)(下面给出的每一行都是数据库中的单行) 我在java中一个接一个地执行3个查询。执行第一个查询后,我将写入文本文件,然后执行第二个查询,写入同一个文本文件。。我也在这样做。如果是那样的话,该如何解决呢 12010051104050131331GZM4

首先,我很抱歉在这里放了一些大的文字

下面是在Java中执行SQL查询的结果,但我希望它使用时间戳将其缩短

例如,下面第1行文本中的时间戳是-040501(HH:mm:ss)(与wise一样,所有数据都包含时间戳)(应使用时间戳参数进行排序)(下面给出的每一行都是数据库中的单行)

我在java中一个接一个地执行3个查询。执行第一个查询后,我将写入文本文件,然后执行第二个查询,写入同一个文本文件。。我也在这样做。如果是那样的话,该如何解决呢

12010051104050131331GZM4         7000000           1    FCFR

120100511040501912828MP2        11590000           0    NOTY

120100511040501312938VF7          366140   .96808795    FGPC

120100511040501912828KA7         6580000           0    NOTY

120100511040501912828JH4          490000           0    NOTY

120100511160528912810PV4        83227500     1.03581    TRIB

120100511160538912795W31               0           1    BILL

120100511160540912828MP2       455784400           0    NOTY

120100511160545912795W31               0           1    BILL

  220100511 040501         2101000

  220100511 040501        51037707

  220100511 040502          700149

  220100511 040502         4289000

  220100511 060514        71616600

  220100511 060514       722453500
我期望的结果是

 12010051104050131331GZM4         7000000           1    FCFR

 120100511040501912828MP2        11590000           0    NOTY

 120100511040501312938VF7          366140   .96808795    FGPC

 120100511040501912828MP2        11590000           0    NOTY

 120100511040501912828JH4          490000           0    NOTY

  20100511040501         2101000

  20100511040501        51037707

  20100511040502         4289000

  20100511040502          700149

  20100511060514       722453500

  20100511060514        71616600

  20100511160528912810PV4        83227500     1.03581    TRIB

  20100511160538912795W31               0           1    BILL

  20100511160540912828MP2       455784400           0    NOTY

  20100511160545912795W31               0           1    BILL
请帮帮我,伙计们。我为此奋斗了很长时间。
提前感谢您的帮助。

理想情况下,该表将有一个
时间戳
列,您可以使用该列在SQL查询中
排序;这比Java中的排序要好得多


我现在不清楚您的表的结构是什么,列是什么,等等。如果它们没有正确规范化,那么您最好的做法是先这样做,而不是让它像一团乱,让查询痛苦不堪。

理想情况下,该表将有一个
TIMESTAMP
列,您可以使用该列在SQL查询中
排序;这比Java中的排序要好得多


我现在不清楚您的表的结构是什么,列是什么,等等。如果它们没有正确地规范化,那么您最好的做法是首先这样做,而不是让它像一团乱,让查询变得痛苦。

最好的选择是在SQL查询中使用ORDER BY。因为,您可以一次访问结果集中的一个元素。因此,获取所有元素并写入文本文件而不进行任何操作。

最好的选择是在SQL查询中使用ORDER BY。因为,您可以一次访问结果集中的一个元素。所以,获取所有元素并写入文本文件,而不进行任何操作。

那么您的数据是一列,其中包含一个带有数据和时间戳的字符串

它是固定宽度的吗?我的意思是,时间戳总是从第10个字符开始,到第15个字符结束吗

这看起来像是一些遗留大型机应用程序的输出,它们通常具有固定宽度的格式

假设是这样,您可以编写一个小包装类,并从查询的结果集生成该类的对象。您的包装器类还应该实现comparable(在这里,您将实现基于提取的时间戳的compare方法)


然后,您需要做的就是将所有对象放在任何java集合(如List)中,然后执行collection.sort()。

那么您的数据是一个包含数据和时间戳的字符串的单列

它是固定宽度的吗?我的意思是,时间戳总是从第10个字符开始,到第15个字符结束吗

这看起来像是一些遗留大型机应用程序的输出,它们通常具有固定宽度的格式

假设是这样,您可以编写一个小包装类,并从查询的结果集生成该类的对象。您的包装器类还应该实现comparable(在这里,您将实现基于提取的时间戳的compare方法)


然后,您需要做的就是将所有对象放入任何java集合(如List)中,并执行collection.sort()。

无论您是使用SQL还是java进行排序,首先必须能够可靠地识别和提取时间戳。显示数据行的格式表明,它们可以被视为固定长度的记录,因此您可以将它们一次读取到一个类中,该类可能实现可比较接口,在该类中,您可以使用子字符串切掉时间戳文本,从该文本创建实际日期或时间戳,并对它们进行比较。然后可以使用标准库对集合或数组中的行进行排序。就个人而言,我仍然会通过类似的机制在SQL中进行排序,假设您从一个数据库获取所有数据,并且使用一个相当复杂的DB,您可以通过将3个查询合并在一起创建一个结果,为时间戳创建一个计算字段,然后按该计算字段排序。有些数据库不允许按计算字段直接排序,但您可以将其用作内联视图,如“按calcfield排序”中的“选择字段、calcfield from(带计算字段的大选择)”。
hth

无论您是用SQL还是Java进行排序,首先必须能够可靠地识别和提取时间戳。显示数据行的格式表明,它们可以被视为固定长度的记录,因此您可以将它们一次读取到一个类中,该类可能实现可比较接口,在该类中,您可以使用子字符串切掉时间戳文本,从该文本创建实际日期或时间戳,并对它们进行比较。然后可以使用标准库对集合或数组中的行进行排序。就个人而言,我仍然会通过类似的机制在SQL中进行排序,假设您从一个数据库获取所有数据,并且使用一个相当复杂的DB,您可以通过将3个查询合并在一起创建一个结果,为时间戳创建一个计算字段,然后按该计算字段排序。有些数据库不允许按计算字段直接排序,但您可以将其用作内联视图,如“按calcfield排序”中的“选择字段、calcfield from(带计算字段的大选择)”。
hth

我正在用java一个接一个地执行3个查询,并写入同一个文本文件。执行第一个查询后,我将写入文本文件,然后执行第二个查询,写入同一个文本文件。。我也在这样做。在这种情况下,如何排序。@Manu:如果您有3个大文件,已经按照某些条件排序,并且您想要合并它们,那么磁盘内合并排序算法是合理的。你好