具有排名的SQL排列的获取方法、装置和计算机设备与流程

文档序号:17860309发布日期:2019-06-11 22:49阅读:156来源:国知局

本申请涉及到计算机领域,特别是涉及到一种具有排名的sql排列的获取方法、装置、计算机设备和存储介质。



背景技术:

目前计算机的很多活动都涉及到数据库的查询,包括对数据库中的一些数据进行排序。一般在数据库中的一些数据进行排序,采用sql进行排序操作。其中sql是structuredquerylanguage(结构化查询语言)的缩写,是用于访问和处理数据库的标准的计算机语言,是专为数据库而建立的操作命令集。sql排列即是以sql语言在数据库中对指定数据进行排序以得到的排列。目前采用sql进行排序的普遍的做法是按照一个标准值(如得分,指标),通过在数据库中按数值大小进行排序得到结果。但是这种排序方式在对数值大小相同的数据进行排序时,仅能按存入时间进行排序,没有准确的排名,并且要排序的数据来源于上游系统等非本数据库时(即没有存入时间),会造成无法通过sql进行查询并排序的后果。因此,现有技术缺乏对数值大小相同的数据进行特殊排序以获得准确排名的技术方案,并且缺乏对来源于不同数据库的数据进行排序的技术方案。



技术实现要素:

本申请的主要目的为提供一种具有排名的sql排列的获取方法、装置、计算机设备和存储介质,旨在对数值大小相同的数据进行排序,并兼容不同数据库的数据。

为了实现上述发明目的,本申请提出一种具有排名的sql排列的获取方法,包括以下步骤:

接收对指定数据的sql排序指令,所述排序指令包括排序字段和排序方式;

根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1;

判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据;

若存在所述排序字段的内容相同的指定数据,则将所述排序字段的内容相同的指定数据的排名均动态记为:排在所有所述排序字段的内容相同的指定数据之前一位的指定数据的排名+1;

将除所述排序字段的内容相同的指定数据之外的其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列。

进一步地,所述根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1的步骤,包括:

根据所述排序指令,从数据库中调取所述指定数据,判断所述指定数据中的排序字段是否存在null内容;

若所述指定数据中的排序字段存在null内容,则记为null数据,将除所述null数据之外的其他指定数据,利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述排列中的首位指定数据的排名记为1,将所述null数据排序在所述排列的最后。

进一步地,所述根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1的步骤,包括:

若所述排序方式为升序排序,则根据所述排序指令,从数据库中调取所述指定数据,按照“orderby所述排序字段”的语句,对所述指定数据进行升序排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1;

若所述排序方式为降序排序,则根据所述排序指令,从数据库中调取所述指定数据,按照“orderby所述排序字段desc”的语句,对所述指定数据进行降序排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1。

进一步地,所述判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据的步骤,包括:

判断在所述指定数据的排列中,所述指定数据的排序字段的内容之间是否完全相同或者互为同义词;

若所述指定数据的排序字段的内容之间完全相同,则判定存在所述排序字段的内容相同的指定数据;

若所述指定数据的排序字段的内容之间互为同义词,则判定存在所述排序字段的内容相同的指定数据,并将具有所述互为同义词的排序字段的内容的指定数据,记为所述排序字段的内容相同的指定数据。

进一步地,所述判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据的步骤之后,包括:

若不存在所述排序字段的内容相同的指定数据,则以公差为1的等差数列作为所述指定数据的排列中的指定数据的排名,其中所述指定数据的排列中的首位指定数据的排名为所述等差数列中的首项。

进一步地,所述将除所述排序字段的内容相同的指定数据之外的其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列的步骤之后,包括:

接收对所述sql排列的分档指令,所述分档指令包括与所述指定数据的排名对应的分档依据和不同档次对应的映射数值;

根据所述分档依据,将所述sql排列分为不同档次,并在所述指定数据中增加映射数值字段,以及在所述映射数值字段中记录与所述指定数据的档次对应的映射数值。

进一步地,所述根据所述分档依据,将所述sql排列分为不同档次,并在所述指定数据中增加映射数值字段,以及在所述映射数值字段中记录与所述指定数据的档次对应的映射数值的步骤,包括:

根据所述分档依据,将所述排名大于第一阈值的指定数据记为第一档次,并在所述第一档次的指定数据中增加的映射数值字段中记录a,其中a为第一档次对应的映射数值;

将所述排名大于第二阈值且不大于第一阈值的指定数据记为第二档次,并在所述第二档次的指定数据中增加的映射数值字段中记录b,其中b为第二档次对应的映射数值;

将所述排名不大于第二阈值的指定数据记为第三档次,并在所述第三档次的指定数据中增加的映射数值字段中记录c,其中c为第三档次对应的映射数值。

本申请提供一种具有排名的sql排列的获取装置,包括:

sql排序指令接收单元,用于接收对指定数据的sql排序指令,所述排序指令包括排序字段和排序方式;

指定数据调取单元,用于根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1;

指定数据判断单元,用于判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据;

内容相同的指定数据标记单元,用于若存在所述排序字段的内容相同的指定数据,则将所述排序字段的内容相同的指定数据的排名均动态记为:排在所有所述排序字段的内容相同的指定数据之前一位的指定数据的排名+1;

其他指定数据标记单元,用于将除所述排序字段的内容相同的指定数据之外的其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列。

本申请提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。

本申请提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。

本申请的具有排名的sql排列的获取方法、装置、计算机设备和存储介质,通过接收对指定数据的sql排序指令,根据所述排序指令,从数据库中调取所述指定数据,获得所述指定数据的排列,将所述排序字段的内容相同的指定数据的排名均动态记为:排在所有所述排序字段的内容相同的指定数据之前一位的指定数据的排名+1,将其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列。从而实现了对数值大小相同的数据进行排序,并兼容不同数据库的数据。

附图说明

图1为本申请一实施例的具有排名的sql排列的获取方法的流程示意图;

图2为本申请一实施例的具有排名的sql排列的获取装置的结构示意框图;

图3为本申请一实施例的计算机设备的结构示意框图。

本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

参照图1,本申请实施例提供一种具有排名的sql排列的获取方法,包括以下步骤:

s1、接收对指定数据的sql排序指令,所述排序指令包括排序字段和排序方式;

s2、根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1;

s3、判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据;

s4、若存在所述排序字段的内容相同的指定数据,则将所述排序字段的内容相同的指定数据的排名均动态记为:排在所有所述排序字段的内容相同的指定数据之前一位的指定数据的排名+1;

s5、将除所述排序字段的内容相同的指定数据之外的其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列。

如步骤s1所述,接收对指定数据的sql排序指令,所述排序指令包括排序字段和排序方式。其中,sql是structuredquerylanguage(结构化查询语言)的缩写,是用于访问和处理数据库的标准的计算机语言,是专为数据库而建立的操作命令集。sql排列即是以sql语言在数据库中对指定数据进行排序以得到的排列。其中,指定数据包括一个或多个字段,在所述一个或多个字段中存在用于排序的字段。所述排序指令包括排序字段和排序方式,排序方式包括升序排序或降序排序。进一步地,所述指定数据可以来源于同一个数据库,或者也可以来源于多个数据库。

如步骤s2所述,根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1。其中,所述数据库为本系统的数据库或其他系统的数据库(如上游系统的数据库)。由于指序指令规定了排序字段与排序方式,那么即可将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列。其中,获得的排列中的指定数据可具有排名,也可不具有排名,但是,所述排列中的首位指定数据的排名被记为1。执行所述排序的语句例如为orderby语句。其中,无论是升序排序或降序排序,排在首位的指定数据均被记为1(与排序字段的内容无关)。

如步骤s3所述,判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据。本实施方式要获取具有排名的sql排列,其中,所述排列需要容纳所述排序字段的内容相同的指定数据。若不存在所述排序字段的内容相同的指定数据,那么所述排列的排名只需以公差为1的等差数列作为所述排列中的指定数据的排名,其中所述排列中的首位指定数据的排名为所述等差数列中的首项,即可获得。但是若存在所述排序字段的内容相同的指定数据,为了更准确地利用数据,应将这些所述排序字段的内容相同的指定数据的排名均设置为相同值。

如步骤s4所述,若存在所述排序字段的内容相同的指定数据,则将所述排序字段的内容相同的指定数据的排名均动态记为:排在所有所述排序字段的内容相同的指定数据之前一位的指定数据的排名+1。具体将所述排序字段的内容相同的指定数据的排名均设置为相同值的方式为:将所述排序字段的内容相同的指定数据的排名均动态记为:排在所有所述排序字段的内容相同的指定数据之前一位的指定数据的排名+1。从而实现了对内容相同的指定数据的排名统一赋值。并且,由于采用动态赋值的方式,使得排名不会发生中断,也不会出现错误。

如步骤s5所述,将除所述排序字段的内容相同的指定数据之外的其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列。除所述排序字段的内容相同的指定数据之外的其他指定数据的排名设置为所述其他指定数据之前一位的指定数据的排名+1,例如,某个其他指定数据之前一位的指定数据(无论是否是内容相同的指定数据,还是其他指定数据)的排名为6,则所述某个其他指定数据的排名为7。并且,由于采用动态赋值的方式,使得排名不会发生中断,也不会出现错误。据此,可得具有排名的sql排列,其中sql排列包括了对所述排序字段的内容相同的指定数据的统一排名。

在一个实施方式中,所述根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1的步骤s2,包括:

s201、根据所述排序指令,从数据库中调取所述指定数据,判断所述指定数据中的排序字段是否存在null内容;

s202、若所述指定数据中的排序字段存在null内容,则记为null数据,将除所述null数据之外的其他指定数据,利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述排列中的首位指定数据的排名记为1,将所述null数据排序在所述排列的最后。

如上所述,实现了对包括null内容的排序字段的指定数据进行排列。其中,null表明所述排序字段是遗漏的未知数据,并不等于零,在排列中不易与其他排序字段的内容相比以排序。若所述排序字段中不存在null内容,则所有排序字段均可以前述方式进行排序,以得到排列。若所述排序字段中存在null内容,则将具有null内容的排序字段的指定数据先记为null数据,并将除了null数据的其他指定数据排序完成后,将null数据加入到所述排列的最后,从而获得最终排列。

在一个实施方式中,所述根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1的步骤s2,包括:

s211、若所述排序方式为升序排序,则根据所述排序指令,从数据库中调取所述指定数据,按照“orderby所述排序字段”的语句,对所述指定数据进行升序排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1;

s212、若所述排序方式为降序排序,则根据所述排序指令,从数据库中调取所述指定数据,按照“orderby所述排序字段desc”的语句,对所述指定数据进行降序排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1。

如上所述,实现了对升序或降序排序,以获得所述排列。其中,在sql语言中,orderby语句用于对结果集进行排序,orderby语句默认按照升序对记录进行排序,orderbydesc语句按照降序对记录进行排序。具体的升序排序语句格式为:orderby所述排序字段;具体的降序排序语句格式为:orderby所述排序字段desc。从而实现了不仅升序排列,也能实现降序排列。相较于普通的java排序,实现了可升可降的排列操作。

在一个实施方式中,所述判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据的步骤s3,包括:

s301、判断在所述指定数据的排列中,所述指定数据的排序字段的内容之间是否完全相同或者互为同义词;

s302、若所述指定数据的排序字段的内容之间完全相同,则判定存在所述排序字段的内容相同的指定数据;

s303、若所述指定数据的排序字段的内容之间互为同义词,则判定存在所述排序字段的内容相同的指定数据,并将具有所述互为同义词的排序字段的内容的指定数据,记为所述排序字段的内容相同的指定数据。

如上所述,实现了进行同义词确认处理。在大量数据中,若a词与b词含义相同,但是a词与b词的首字母不同,那么在排序a词与b词将排序至不同位置,导致排名也不相同。因此,在判断在所述排列中,是否存在所述排序字段的内容相同的指定数据时,若确定互为同义词,则将互为同义词的排序字段的内容认定为排序字段的内容相同的指定数据,从而使得排名更加精准。其中,是否互为同义词,可借助预存的同义词库中进行,即,a词与b词同时处于同义词库中的同一个同义词组,那么a词与b词为互为同义词。进一步地,还包括:将具有互为同义词的排序字段的内容的指定数据,在所述排列中的位置调整为所述具有互为同义词的排序字段的内容的指定数据中的第一个指定数据的位置之后。

在一个实施方式中,所述判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据的步骤s3之后,包括:

s31、若不存在所述排序字段的内容相同的指定数据,则以公差为1的等差数列作为所述指定数据的排列中的指定数据的排名,其中所述指定数据的排列中的首位指定数据的排名为所述等差数列中的首项。

如上所述,实现了对不存在所述排序字段的内容相同的指定数据进行排名。由于不存在所述排序字段的内容相同的指定数据,意味着所述排列中的所有指定数据在所述排序字段中的内容均不同,那么就没有重复排名的顾虑,因此以公差为1的等差数列作为所述排列中的指定数据的排名,其中所述排列中的首位指定数据的排名为所述等差数列中的首项,从而实现得到排名。

在一个实施方式中,所述将除所述排序字段的内容相同的指定数据之外的其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列的步骤s5之后,包括:

s51、接收对所述sql排列的分档指令,所述分档指令包括与所述指定数据的排名对应的分档依据和不同档次对应的映射数值;

s52、根据所述分档依据,将所述sql排列分为不同档次,并在所述指定数据中增加映射数值字段,以及在所述映射数值字段中记录与所述指定数据的档次对应的映射数值。

如上所述,实现了对sql排列进行分档。由于在实际应用中,简单的排名并不足以满足需要,因此进行分档,并对不同档次映射数值。例如,进行佣金计算,其中将排名在第一预定排名(例如20名)之前的对象映射为第一档次数值(例如1.1),将排名在第一预定排名之后的对象映射为第二档次数值(例如0.9),则前20名的映射数值为1.1,其佣金为1.1乘以固定佣金值,其他的对象映射数值为0.9,其佣金为0.9乘以固定佣金值,从而满足不同档次计算的需要。具体地,在数据库中的指定数据中增加新的映射数值字段,在所述映射数值字段中对应记录入映射数值。从而,本实施方式解决了现有技术的sql排列难以直接应用的技术问题。

在一个实施方式中,所述根据所述分档依据,将所述sql排列分为不同档次,并在所述指定数据中增加映射数值字段,以及在所述映射数值字段中记录与所述指定数据的档次对应的映射数值的步骤s52,包括:

s5201、根据所述分档依据,将所述排名大于第一阈值的指定数据记为第一档次,并在所述第一档次的指定数据中增加的映射数值字段中记录a,其中a为第一档次对应的映射数值;

s5202、将所述排名大于第二阈值且不大于第一阈值的指定数据记为第二档次,并在所述第二档次的指定数据中增加的映射数值字段中记录b,其中b为第二档次对应的映射数值;

s5203、将所述排名不大于第二阈值的指定数据记为第三档次,并在所述第三档次的指定数据中增加的映射数值字段中记录c,其中c为第三档次对应的映射数值。

如上所述,实现了根据所述分档依据,将所述sql排列分为所述不同档次,并在所述指定数据中增加映射数值字段。具体地,将所述档次分为三档,并根据不同档次对应的映射数值,在所述增加的映射数值字段中对应记录,从而在需要分档计算时,仅简单调取所述映射数值字段中的内容即可,从而便于使用,提高效率。

本申请的具有排名的sql排列的获取方法,通过接收对指定数据的sql排序指令,根据所述排序指令,从数据库中调取所述指定数据,获得所述指定数据的排列,将所述排序字段的内容相同的指定数据的排名均动态记为:排在所有所述排序字段的内容相同的指定数据之前一位的指定数据的排名+1,将其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列。从而实现了对数值大小相同的数据进行排序,并兼容不同数据库的数据。

参照图2,本申请实施例提供一种具有排名的sql排列的获取装置,包括:

sql排序指令接收单元10,用于接收对指定数据的sql排序指令,所述排序指令包括排序字段和排序方式;

指定数据调取单元20,用于根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1;

指定数据判断单元30,用于判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据;

内容相同的指定数据标记单元40,用于若存在所述排序字段的内容相同的指定数据,则将所述排序字段的内容相同的指定数据的排名均动态记为:排在所有所述排序字段的内容相同的指定数据之前一位的指定数据的排名+1;

其他指定数据标记单元50,用于将除所述排序字段的内容相同的指定数据之外的其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列。

如单元10所述,接收对指定数据的sql排序指令,所述排序指令包括排序字段和排序方式。其中,sql是structuredquerylanguage(结构化查询语言)的缩写,是用于访问和处理数据库的标准的计算机语言,是专为数据库而建立的操作命令集。sql排列即是以sql语言在数据库中对指定数据进行排序以得到的排列。其中,指定数据包括一个或多个字段,在所述一个或多个字段中存在用于排序的字段。所述排序指令包括排序字段和排序方式,排序方式包括升序排序或降序排序。进一步地,所述指定数据可以来源于同一个数据库,或者也可以来源于多个数据库。

如单元20所述,根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1。其中,所述数据库为本系统的数据库或其他系统的数据库(如上游系统的数据库)。由于指序指令规定了排序字段与排序方式,那么即可将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列。其中,获得的排列中的指定数据可具有排名,也可不具有排名,但是,所述排列中的首位指定数据的排名被记为1。执行所述排序的语句例如为orderby语句。其中,无论是升序排序或降序排序,排在首位的指定数据均被记为1(与排序字段的内容无关)。

如单元30所述,判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据。本实施方式要获取具有排名的sql排列,其中,所述排列需要容纳所述排序字段的内容相同的指定数据。若不存在所述排序字段的内容相同的指定数据,那么所述排列的排名只需以公差为1的等差数列作为所述排列中的指定数据的排名,其中所述排列中的首位指定数据的排名为所述等差数列中的首项,即可获得。但是若存在所述排序字段的内容相同的指定数据,为了更准确地利用数据,应将这些所述排序字段的内容相同的指定数据的排名均设置为相同值。

如单元40所述,若存在所述排序字段的内容相同的指定数据,则将所述排序字段的内容相同的指定数据的排名均动态记为:排在所有所述排序字段的内容相同的指定数据之前一位的指定数据的排名+1。具体将所述排序字段的内容相同的指定数据的排名均设置为相同值的方式为:将所述排序字段的内容相同的指定数据的排名均动态记为:排在所有所述排序字段的内容相同的指定数据之前一位的指定数据的排名+1。从而实现了对内容相同的指定数据的排名统一赋值。并且,由于采用动态赋值的方式,使得排名不会发生中断,也不会出现错误。

如单元50所述,将除所述排序字段的内容相同的指定数据之外的其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列。除所述排序字段的内容相同的指定数据之外的其他指定数据的排名设置为所述其他指定数据之前一位的指定数据的排名+1,例如,某个其他指定数据之前一位的指定数据(无论是否是内容相同的指定数据,还是其他指定数据)的排名为6,则所述某个其他指定数据的排名为7。并且,由于采用动态赋值的方式,使得排名不会发生中断,也不会出现错误。据此,可得具有排名的sql排列,其中sql排列包括了对所述排序字段的内容相同的指定数据的统一排名。

在一个实施方式中,所述指定数据调取单元20,包括:

null内容判断子单元,用于根据所述排序指令,从数据库中调取所述指定数据,判断所述指定数据中的排序字段是否存在null内容;

null数据排序子单元,用于若所述指定数据中的排序字段存在null内容,则记为null数据,将除所述null数据之外的其他指定数据,利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述排列中的首位指定数据的排名记为1,将所述null数据排序在所述排列的最后。

如上所述,实现了对包括null内容的排序字段的指定数据进行排列。其中,null表明所述排序字段是遗漏的未知数据,并不等于零,在排列中不易与其他排序字段的内容相比以排序。若所述排序字段中不存在null内容,则所有排序字段均可以前述方式进行排序,以得到排列。若所述排序字段中存在null内容,则将具有null内容的排序字段的指定数据先记为null数据,并将除了null数据的其他指定数据排序完成后,将null数据加入到所述排列的最后,从而获得最终排列。

在一个实施方式中,所述指定数据调取单元20,包括:

升序排列子单元,用于若所述排序方式为升序排序,则根据所述排序指令,从数据库中调取所述指定数据,按照“orderby所述排序字段”的语句,对所述指定数据进行升序排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1;

降序排列子单元,用于若所述排序方式为降序排序,则根据所述排序指令,从数据库中调取所述指定数据,按照“orderby所述排序字段desc”的语句,对所述指定数据进行降序排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1。

如上所述,实现了对升序或降序排序,以获得所述排列。其中,在sql语言中,orderby语句用于对结果集进行排序,orderby语句默认按照升序对记录进行排序,orderbydesc语句按照降序对记录进行排序。具体的升序排序语句格式为:orderby所述排序字段;具体的降序排序语句格式为:orderby所述排序字段desc。从而实现了不仅升序排列,也能实现降序排列。相较于普通的java排序,实现了可升可降的排列操作。

在一个实施方式中,所述指定数据判断单元30,包括:

相同或者同义词判断子单元,用于判断在所述指定数据的排列中,所述指定数据的排序字段的内容之间是否完全相同或者互为同义词;

相同判定子单元,用于若所述指定数据的排序字段的内容之间完全相同,则判定存在所述排序字段的内容相同的指定数据;

同义词判定子单元,用于若所述指定数据的排序字段的内容之间互为同义词,则判定存在所述排序字段的内容相同的指定数据,并将具有所述互为同义词的排序字段的内容的指定数据,记为所述排序字段的内容相同的指定数据。

如上所述,实现了进行同义词确认处理。在大量数据中,若a词与b词含义相同,但是a词与b词的首字母不同,那么在排序a词与b词将排序至不同位置,导致排名也不相同。因此,在判断在所述排列中,是否存在所述排序字段的内容相同的指定数据时,若确定互为同义词,则将互为同义词的排序字段的内容认定为排序字段的内容相同的指定数据,从而使得排名更加精准。其中,是否互为同义词,可借助预存的同义词库中进行,即,a词与b词同时处于同义词库中的同一个同义词组,那么a词与b词为互为同义词。进一步地,还包括:将具有互为同义词的排序字段的内容的指定数据,在所述排列中的位置调整为所述具有互为同义词的排序字段的内容的指定数据中的第一个指定数据的位置之后。

在一个实施方式中,所述装置,包括:

等差数列排名单元,用于若不存在所述排序字段的内容相同的指定数据,则以公差为1的等差数列作为所述指定数据的排列中的指定数据的排名,其中所述指定数据的排列中的首位指定数据的排名为所述等差数列中的首项。

如上所述,实现了对不存在所述排序字段的内容相同的指定数据进行排名。由于不存在所述排序字段的内容相同的指定数据,意味着所述排列中的所有指定数据在所述排序字段中的内容均不同,那么就没有重复排名的顾虑,因此以公差为1的等差数列作为所述排列中的指定数据的排名,其中所述排列中的首位指定数据的排名为所述等差数列中的首项,从而实现得到排名。

在一个实施方式中,所述装置,包括:

分档指令接收单元,用于接收对所述sql排列的分档指令,所述分档指令包括与所述指定数据的排名对应的分档依据和不同档次对应的映射数值;

分档单元,用于根据所述分档依据,将所述sql排列分为不同档次,并在所述指定数据中增加映射数值字段,以及在所述映射数值字段中记录与所述指定数据的档次对应的映射数值。

如上所述,实现了对sql排列进行分档。由于在实际应用中,简单的排名并不足以满足需要,因此进行分档,并对不同档次映射数值。例如,进行佣金计算,其中将排名在第一预定排名(例如20名)之前的对象映射为第一档次数值(例如1.1),将排名在第一预定排名之后的对象映射为第二档次数值(例如0.9),则前20名的映射数值为1.1,其佣金为1.1乘以固定佣金值,其他的对象映射数值为0.9,其佣金为0.9乘以固定佣金值,从而满足不同档次计算的需要。具体地,在数据库中的指定数据中增加新的映射数值字段,在所述映射数值字段中对应记录入映射数值。从而,本实施方式解决了现有技术的sql排列难以直接应用的技术问题。

在一个实施方式中,所述分档单元,包括:

第一档次分档子单元,用于根据所述分档依据,将所述排名大于第一阈值的指定数据记为第一档次,并在所述第一档次的指定数据中增加的映射数值字段中记录a,其中a为第一档次对应的映射数值;

第二档次分档子单元,用于将所述排名大于第二阈值且不大于第一阈值的指定数据记为第二档次,并在所述第二档次的指定数据中增加的映射数值字段中记录b,其中b为第二档次对应的映射数值;

第三档次分档子单元,用于将所述排名不大于第二阈值的指定数据记为第三档次,并在所述第三档次的指定数据中增加的映射数值字段中记录c,其中c为第三档次对应的映射数值。

如上所述,实现了根据所述分档依据,将所述sql排列分为所述不同档次,并在所述指定数据中增加映射数值字段。具体地,将所述档次分为三档,并根据不同档次对应的映射数值,在所述增加的映射数值字段中对应记录,从而在需要分档计算时,仅简单调取所述映射数值字段中的内容即可,从而便于使用,提高效率。

本申请的具有排名的sql排列的获取装置,通过接收对指定数据的sql排序指令,根据所述排序指令,从数据库中调取所述指定数据,获得所述指定数据的排列,将所述排序字段的内容相同的指定数据的排名均动态记为:排在所有所述排序字段的内容相同的指定数据之前一位的指定数据的排名+1,将其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列。从而实现了对数值大小相同的数据进行排序,并兼容不同数据库的数据。

参照图3,本发明实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储具有排名的sql排列的获取方法所用数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种具有排名的sql排列的获取方法。

上述处理器执行上述具有排名的sql排列的获取方法,包括以下步骤:接收对指定数据的sql排序指令,所述排序指令包括排序字段和排序方式;根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1;判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据;若存在所述排序字段的内容相同的指定数据,则将所述排序字段的内容相同的指定数据的排名均动态记为:排在所有所述排序字段的内容相同的指定数据之前一位的指定数据的排名+1;将除所述排序字段的内容相同的指定数据之外的其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列。

在一个实施方式中,所述根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1的步骤,包括:根据所述排序指令,从数据库中调取所述指定数据,判断所述指定数据中的排序字段是否存在null内容;若所述指定数据中的排序字段存在null内容,则记为null数据,将除所述null数据之外的其他指定数据,利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述排列中的首位指定数据的排名记为1,将所述null数据排序在所述排列的最后。

在一个实施方式中,所述根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1的步骤,包括:若所述排序方式为升序排序,则根据所述排序指令,从数据库中调取所述指定数据,按照“orderby所述排序字段”的语句,对所述指定数据进行升序排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1;若所述排序方式为降序排序,则根据所述排序指令,从数据库中调取所述指定数据,按照“orderby所述排序字段desc”的语句,对所述指定数据进行降序排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1。

在一个实施方式中,所述判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据的步骤,包括:判断在所述指定数据的排列中,所述指定数据的排序字段的内容之间是否完全相同或者互为同义词;若所述指定数据的排序字段的内容之间完全相同,则判定存在所述排序字段的内容相同的指定数据;若所述指定数据的排序字段的内容之间互为同义词,则判定存在所述排序字段的内容相同的指定数据,并将具有所述互为同义词的排序字段的内容的指定数据,记为所述排序字段的内容相同的指定数据。

在一个实施方式中,所述判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据的步骤之后,包括:若不存在所述排序字段的内容相同的指定数据,则以公差为1的等差数列作为所述指定数据的排列中的指定数据的排名,其中所述指定数据的排列中的首位指定数据的排名为所述等差数列中的首项。

在一个实施方式中,所述将除所述排序字段的内容相同的指定数据之外的其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列的步骤之后,包括:接收对所述sql排列的分档指令,所述分档指令包括与所述指定数据的排名对应的分档依据和不同档次对应的映射数值;根据所述分档依据,将所述sql排列分为不同档次,并在所述指定数据中增加映射数值字段,以及在所述映射数值字段中记录与所述指定数据的档次对应的映射数值。

在一个实施方式中,所述根据所述分档依据,将所述sql排列分为不同档次,并在所述指定数据中增加映射数值字段,以及在所述映射数值字段中记录与所述指定数据的档次对应的映射数值的步骤,包括:根据所述分档依据,将所述排名大于第一阈值的指定数据记为第一档次,并在所述第一档次的指定数据中增加的映射数值字段中记录a,其中a为第一档次对应的映射数值;将所述排名大于第二阈值且不大于第一阈值的指定数据记为第二档次,并在所述第二档次的指定数据中增加的映射数值字段中记录b,其中b为第二档次对应的映射数值;将所述排名不大于第二阈值的指定数据记为第三档次,并在所述第三档次的指定数据中增加的映射数值字段中记录c,其中c为第三档次对应的映射数值。

本领域技术人员可以理解,图中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。

本申请的计算机设备,通过接收对指定数据的sql排序指令,根据所述排序指令,从数据库中调取所述指定数据,获得所述指定数据的排列,将所述排序字段的内容相同的指定数据的排名均动态记为:排在所有所述排序字段的内容相同的指定数据之前一位的指定数据的排名+1,将其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列。从而实现了对数值大小相同的数据进行排序,并兼容不同数据库的数据。

本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现具有排名的sql排列的获取方法,包括以下步骤:接收对指定数据的sql排序指令,所述排序指令包括排序字段和排序方式;根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1;判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据;若存在所述排序字段的内容相同的指定数据,则将所述排序字段的内容相同的指定数据的排名均动态记为:排在所有所述排序字段的内容相同的指定数据之前一位的指定数据的排名+1;将除所述排序字段的内容相同的指定数据之外的其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列。

在一个实施方式中,所述根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1的步骤,包括:根据所述排序指令,从数据库中调取所述指定数据,判断所述指定数据中的排序字段是否存在null内容;若所述指定数据中的排序字段存在null内容,则记为null数据,将除所述null数据之外的其他指定数据,利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述排列中的首位指定数据的排名记为1,将所述null数据排序在所述排列的最后。

在一个实施方式中,所述根据所述排序指令,从数据库中调取所述指定数据,将所述指定数据利用所述排序字段按照所述排序方式进行排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1的步骤,包括:若所述排序方式为升序排序,则根据所述排序指令,从数据库中调取所述指定数据,按照“orderby所述排序字段”的语句,对所述指定数据进行升序排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1;若所述排序方式为降序排序,则根据所述排序指令,从数据库中调取所述指定数据,按照“orderby所述排序字段desc”的语句,对所述指定数据进行降序排序,获得所述指定数据的排列,并将所述指定数据的排列中的首位指定数据的排名记为1。

在一个实施方式中,所述判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据的步骤,包括:判断在所述指定数据的排列中,所述指定数据的排序字段的内容之间是否完全相同或者互为同义词;若所述指定数据的排序字段的内容之间完全相同,则判定存在所述排序字段的内容相同的指定数据;若所述指定数据的排序字段的内容之间互为同义词,则判定存在所述排序字段的内容相同的指定数据,并将具有所述互为同义词的排序字段的内容的指定数据,记为所述排序字段的内容相同的指定数据。

在一个实施方式中,所述判断在所述指定数据的排列中,是否存在所述排序字段的内容相同的指定数据的步骤之后,包括:若不存在所述排序字段的内容相同的指定数据,则以公差为1的等差数列作为所述指定数据的排列中的指定数据的排名,其中所述指定数据的排列中的首位指定数据的排名为所述等差数列中的首项。

在一个实施方式中,所述将除所述排序字段的内容相同的指定数据之外的其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列的步骤之后,包括:接收对所述sql排列的分档指令,所述分档指令包括与所述指定数据的排名对应的分档依据和不同档次对应的映射数值;根据所述分档依据,将所述sql排列分为不同档次,并在所述指定数据中增加映射数值字段,以及在所述映射数值字段中记录与所述指定数据的档次对应的映射数值。

在一个实施方式中,所述根据所述分档依据,将所述sql排列分为不同档次,并在所述指定数据中增加映射数值字段,以及在所述映射数值字段中记录与所述指定数据的档次对应的映射数值的步骤,包括:根据所述分档依据,将所述排名大于第一阈值的指定数据记为第一档次,并在所述第一档次的指定数据中增加的映射数值字段中记录a,其中a为第一档次对应的映射数值;将所述排名大于第二阈值且不大于第一阈值的指定数据记为第二档次,并在所述第二档次的指定数据中增加的映射数值字段中记录b,其中b为第二档次对应的映射数值;将所述排名不大于第二阈值的指定数据记为第三档次,并在所述第三档次的指定数据中增加的映射数值字段中记录c,其中c为第三档次对应的映射数值。

本申请的计算机可读存储介质,通过接收对指定数据的sql排序指令,根据所述排序指令,从数据库中调取所述指定数据,获得所述指定数据的排列,将所述排序字段的内容相同的指定数据的排名均动态记为:排在所有所述排序字段的内容相同的指定数据之前一位的指定数据的排名+1,将其他指定数据的排名动态记为:所述其他指定数据之前一位的指定数据的排名+1,从而获取具有排名的sql排列。从而实现了对数值大小相同的数据进行排序,并兼容不同数据库的数据。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双速据率sdram(ssrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1