CN101136035A - 不同属性字段的排序方法及系统 - Google Patents
不同属性字段的排序方法及系统 Download PDFInfo
- Publication number
- CN101136035A CN101136035A CNA2007101635581A CN200710163558A CN101136035A CN 101136035 A CN101136035 A CN 101136035A CN A2007101635581 A CNA2007101635581 A CN A2007101635581A CN 200710163558 A CN200710163558 A CN 200710163558A CN 101136035 A CN101136035 A CN 101136035A
- Authority
- CN
- China
- Prior art keywords
- field
- sort
- attribute
- interim
- different attribute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种不同属性字段的排序方法及系统,解决现有的对不同属性的多字段进行排序设置的过程复杂且不易实现的问题。所述方法包括:设置临时字段;对不同属性的多字段分别进行格式转换;将转换后的多字段组合成一个字符串,并赋值给所述临时字段;采用单字段排序方法对所述临时字段进行排序。所述排序方法简单易行,所述方法满足了用户对多字段排序的需求。与调用数据库多字段排序功能的方式相比,无需保存对象至数据库就可以直接在内存中进行排序,降低了数据库的压力,提高了排序的效率。与调用JAVA内置的多字段排序功能相比,其调用JAVA的单字段排序功能的接口相对简单,因此可以调用现有的单字段排序方法进行处理。
Description
技术领域
本发明涉及字段排序技术,特别是涉及一种不同属性字段的排序方法及系统。
背景技术
在各种应用系统中,常常需要对对象进行排序处理,例如在数据库应用系统中,最常用的是对相同属性的字段(如同是数字属性,或同是英文字母属性等)进行升序或降序排序。但是,在实际应用中,也会出现需要对不同属性的字段(如数字、英文字母、汉字等属性)同时进行排序的情况。
举例说明,排序对象为一张单据数据表,数据表中具有物料、供应商、价格三个字段,每个字段具有各自的属性,如下表:
序号 | 物料 | 供应商 | 价格1 |
1 | 物料1 | 供应商2 | 3 |
2 | 物料2 | 供应商1 | 2 |
3 | 物料3 | 供应商2 | 1 |
表1
如果按照单个字段进行排序,则是对物料列、或供应商列、或价格列进行单独排序,表1是对物料进行排序的结果。如果按照供应商进行排序,则结果如下表:
序号 | 物料 | 供应商 | 价格1 |
2 | 物料2 | 供应商1 | 2 |
1 | 物料1 | 供应商2 | 3 |
3 | 物料3 | 供应商2 | 1 |
表2
如果用户的要求是按照“供应商+价格+物料”同时进行降序或升序排序,现有的处理方法是利用已有的排序算法来解决不同属性的多字段排序问题。例如,已有的一种多字段排序方式是将排序数据传送回数据库系统,利用数据库系统的多字段排序功能进行排序,这种方式的缺点是需要将排序数据保存到数据库才能进行排序,这样会增加应用服务器与数据库端的通讯压力以及数据库端的服务器压力。
还有一种常用的方式是利用JAVA语言内置的多字段排序功能,由于应用系统需要调用JAVA内置的多字段排序功能,所以需要实现应用系统与JAVA相关的多个接口,但是实现起来代码复杂,不易于理解,而且不利于代码的维护。
综上所述,应用系统利用现有的多字段排序功能,在实现方式上都存在缺点,因此现有的对不同属性的多字段进行排序设置的过程复杂且不易实现。
发明内容
本发明所要解决的技术问题是提供不同属性字段的排序方法及系统,以解决现有的对不同属性的多字段进行排序设置的过程复杂且不易实现的问题。
为解决上述技术问题,根据本发明提供的具体实施例,本发明公开了以下技术方案:
不同属性字段的排序方法,包括:
设置临时字段;
对不同属性的多字段分别进行格式转换;
将转换后的多字段组合成一个字符串,并赋值给所述临时字段;
采用单字段排序方法对所述临时字段进行排序。
其中,所述对不同属性的多字段进行格式转换的步骤包括:设置待排序字段的最大长度;根据字段的属性,对不同属性的待排序字段分别计算字段长度;根据所述最大长度进行补0操作,将同一属性的字段转换为相同长度的字符串。
其中,若待排序字段的属性为数字型,则分别设置小数点前的最大长度和小数点后的最大长度。
其中,对临时字段进行排序的步骤包括:以多字段的组合顺序为排序优先级,对包含多个不同属性字段的字符串进行排序。
其中,所述设置临时字段的步骤包括:在对象中添加一属性作为排序的临时字段。
不同属性字段的排序系统,包括:
多字段处理单元,用于设置临时字段;对不同属性的多字段分别进行格式转换;将转换后的多字段组合成一个字符串,并赋值给所述临时字段;
排序单元,用于调用单字段排序方法,对所述临时字段进行排序。
其中,所述多字段处理单元设置待排序字段的最大长度,根据字段的属性,对不同属性的待排序字段分别计算字段长度,并根据所述最大长度进行补0操作,将同一属性的字段转换为相同长度的字符串,完成对不同属性多字段的格式转换操作。
其中,若待排序字段的属性为数字型,则分别设置小数点前的最大长度和小数点后的最大长度。
其中,所述排序单元以多字段的组合顺序为排序优先级,对包含多个不同属性字段的字符串进行排序,完成对临时字段的排序。
其中,所述多字段处理单元在对象中添加一属性作为排序的临时字段,完成临时字段的设置操作。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明实施例提供了一种不同属性字段的排序方法,通过将不同属性的各字段进行格式转换,并组合成一个字符串作为单字段,然后就可以按照单字段排序方法进行排序处理。所述排序方法简单易行,与调用数据库多字段排序功能的方式相比较,无需先保存对象至数据库,就可以直接在内存中进行排序,降低了数据库的压力,提高了排序的效率。与调用JAVA内置的多字段排序功能相比较,将多字段转换为单字段处理的方式,其调用JAVA内置的单字段排序功能的接口相对简单,因此可以调用现有的单字段排序方法进行处理。而且,允许用户自定义对不同属性的字段同时进行排序,满足了用户对多字段排序的需求。
附图说明
图1是本发明实施例所述不同属性字段的排序方法流程图;
图2是本发明实施例所述不同属性字段的排序系统的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
在现有的排序过程中,在某些情况下需要同时对对象进行多个不同属性字段的排序。针对所述不同属性的多个字段同时需要排序的问题,本发明实施例提供了一种对不同属性的多字段进行排序的方法,通过将不同属性的各字段进行格式转换,并组合成一个字符串作为单字段,然后就可以调用单字段排序方法进行排序处理。
参照图1,是本发明实施例所述不同属性字段的排序方法流程图。
步骤101,设置临时字段。
本实施例中设置临时字段的方式是,在对象中添加一属性,作为排序的临时字段。例如,在单据数据表中新添加一个字段作为临时字段,该临时字段作为该单据数据表的一个属性存在。当然,也可以以其他方式来设置临时字段。
步骤102,对不同属性的多个待排序字段进行格式化处理。
所述格式化处理是指将字段值进行格式转换,本实施例采用的格式转换方式是:首先,设置待排序字段的最大长度;然后,根据字段的属性,对不同属性的待排序字段分别计算字段长度;最后,根据所述最大长度进行补0操作,将同一属性的字段转换为相同长度的字符串。其中,可以对各个属性字段设置一个统一的最大长度值,也可以针对不同属性字段分别设置最大长度。
举例说明,对于数字型字段,先格式化成有具有小数点的值,由于ASCII码字符表中小数点的值为45,所以对数值类型的字段,可以根据ASCII码值识别出小数点,以小数点进行分隔进行长度格式化,再补零0处理。例如设置小数点前的最大长度5位,小数点后的最大长度为7位,则“123.12345”转换为“00123.1234500”,“23.12345”转换为“00023.1234500”。
对于英文字母或汉字等类型的字段,也按照上述格式转换方式进行后续补0处理。例如设置待排序字段的最大长度为15,原字符串为“microsoft”,则转换后为“000000microsoft”。对于汉字类型的字段,假设最大长度为10,原字段值为“微软”,由于在ASCII码字符表中每个汉字占用两个英文字符的位置,所以处理后的值为“000000微软”。
需要说明的是,本实施例并不限定格式转换的方式,并且对补0的位置也不作限定,上述说明仅作为一种实施例来阐述本发明的实现过程。
步骤103,将转换后的多字段组合成一个新的字符串,并赋值给所述临时字段。
例如,将“123.12345”与“微软”组合为“00123.1234500000000微软”。由于预先定义了“123.12345”的最大长度和“微软”的最大长度,所以可以根据长度设置来划分出组合字符串中每个属性字段的值。
步骤104,采用单字段排序方法对所述临时字段进行排序。
经过步骤103得到的组合字符串实质上为一个单字段,所以可以利用现有的单字段排序方法对整个对象进行多个不同属性字段的同时排序。单字段排序的原理是:根据每个字符(包括数字、英文字母、汉字、标点符号等各种字符)的ASCII码值比较大小。对临时字段中的组合字符串进行处理时,以多字段的组合顺序为排序优先级,对包含多个不同属性字段的字符串进行排序。
例如,针对表1中的单据数据表,如果按照“供应商+价格+物料”同时进行升序排序,则排序结果如下:
序号 | 物料 | 供应商 | 价格1 |
1 | 物料2 | 供应商1 | 2 |
2 | 物料3 | 供应商2 | 1 |
3 | 物料1 | 供应商2 | 3 |
表3
对“供应商+价格+物料”组合的字符串进行排序时,根据组合顺序确定排序优先级,字段“供应商”的排序优先级最高,然后是字段“价格”,最后是字段“物料”。即先按照“供应商”排序,对于同时包含“供应商2”的2个组合字符串,再按照“价格”进行升序排序,最后再考虑字段“物料”的排序。
基于上述单字段排序原理,可以自行编写排序算法来实现组合字段的排序处理,也可以调用现有的单字段排序方法实现,例如直接在内存中调用数据库排序功能,或者调用JAVA内置的单字段排序功能等现有手段。
需要说明的是,本发明实施例中,对单字段排序的处理仍可以使用数据库排序和JAVA内置排序功能,这与背景技术中对现有技术的描述并不冲突。因为与调用数据库多字段排序功能的方式相比较,无需先保存对象至数据库,就可以直接在内存中进行排序,降低了数据库的压力,而且在内存中完成排序提高了系统运行速度。与调用JAVA内置的多字段排序功能相比较,将多字段转换为单字段处理的方式,其调用JAVA内置的单字段排序功能的接口相对简单,因此可以调用现有的单字段排序方法进行处理。而且,还允许用户自定义对不同属性的字段同时进行排序,满足了用户对多字段排序的需求。
为清楚说明上述排序方法,下面举例进行说明。假设有3个不同属性的字段,分别是数字型、英文字母型和汉字型。由于英文字母型和汉字型字段的处理方式相同,所以将英文字母型和汉字型字段放在同一个表里进行说明,如下:
字段1(数字型) | 字段1转换后的结果(可根据数字型的定义,如定义整数位长度为10,小数位为5),补0操作 |
12345.1234 | 0000012345.12340 |
123456.12345 | 0000123456.12345 |
12.12 | 0000000012.12000 |
表4
字段2(英文字母型和汉字型) | 字段2转换后的结果(可根据字符型的定义,如定义字符串的长度为10,1个汉字=2个英文字符),补0操作 |
Kingdee | 000kingdee |
金蝶 | 000000金蝶 |
Eas | 0000000Eas |
表5
将表4和表5中处理后的字段1和字段2组合成为一个字段的结果如下:
字段1转换后的结果 | 字段2转换后的结果 | 字段1+字段2 |
0000012345.12340 | 000kingdee | 0000012345.12340000kingdee |
0000123456.12345 | 000000金蝶 | 0000123456.12345000000金蝶 |
0000000012.12000 | 0000000Eas | 0000000012.120000000000Eas |
表6
然后对“字段1+字段2”的组合字符串进行排序处理即可。
针对上述不同属性字段的排序方法实施例,本发明还提供了一种不同属性字段的排序系统实施例。参照图2,是本发明实施例所述不同属性字段的排序系统的结构框图。
所述系统主要包括多字段处理单元201和排序单元202。所述多字段处理单元201主要用于设置临时字段,对不同属性的多字段分别进行格式转换,并将转换后的多字段组合成一个字符串,赋值给所述临时字段;所述排序单元202主要用于调用单字段排序方法,对所述临时字段进行排序。其中,所述多字段处理单元201设置待排序字段的最大长度,根据字段的属性,对不同属性的待排序字段分别计算字段长度,并根据所述最大长度进行补0操作,将同一属性的字段转换为相同长度的字符串,完成对不同属性多字段的格式转换操作;在对象中添加一属性作为排序的临时字段,完成临时字段的设置操作。所述排序单元202以多字段的组合顺序为排序优先级,对包含多个不同属性字段的字符串进行排序,完成对临时字段的排序。
如图2所示,多字段处理单元201接收待排序的各个属性字段,按照前述方法进行格式转换,并组合成满足多字符串排序的统一字段;然后由排序单元202实现与现有单字段排序模块的简单接口,直接调用现有的单字段排序功能在内存中对组合字符串进行排序处理。排序单元202也可以自行设计排序算法来处理组合字符串。由于对现有排序方法的调用是对单字段排序的调用,不同于调用现有多字段排序方法时需要实现的复杂接口,所以系统与现有排序模块的接口实现简单易行,便于代码维护。而且,排序单元202在内存中就可以完成排序处理,提高了系统运行速度。
图2所示系统中未详述的部分可以参见图1所示方法的相关部分,为了篇幅考虑,在此不再详述。
以上对本发明所提供的不同属性字段的排序方法及系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.不同属性字段的排序方法,其特征在于,包括:
设置临时字段;
对不同属性的多字段分别进行格式转换;
将转换后的多字段组合成一个字符串,并赋值给所述临时字段;
采用单字段排序方法对所述临时字段进行排序。
2.根据权利要求1所述的方法,其特征在于,所述对不同属性的多字段进行格式转换的步骤包括:
设置待排序字段的最大长度;
根据字段的属性,对不同属性的待排序字段分别计算字段长度;
根据所述最大长度进行补0操作,将同一属性的字段转换为相同长度的字符串。
3.根据权利要求2所述的方法,其特征在于:若待排序字段的属性为数字型,则分别设置小数点前的最大长度和小数点后的最大长度。
4.根据权利要求1所述的方法,其特征在于,对临时字段进行排序的步骤包括:以多字段的组合顺序为排序优先级,对包含多个不同属性字段的字符串进行排序。
5.根据权利要求1所述的方法,其特征在于,所述设置临时字段的步骤包括:在对象中添加一属性作为排序的临时字段。
6.不同属性字段的排序系统,其特征在于,包括:
多字段处理单元,用于设置临时字段;对不同属性的多字段分别进行格式转换;将转换后的多字段组合成一个字符串,并赋值给所述临时字段;
排序单元,用于调用单字段排序方法,对所述临时字段进行排序。
7.根据权利要求6所述的系统,其特征在于:所述多字段处理单元设置待排序字段的最大长度,根据字段的属性,对不同属性的待排序字段分别计算字段长度,并根据所述最大长度进行补0操作,将同一属性的字段转换为相同长度的字符串,完成对不同属性多字段的格式转换操作。
8.根据权利要求7所述的系统,其特征在于:若待排序字段的属性为数字型,则分别设置小数点前的最大长度和小数点后的最大长度。
9.根据权利要求6所述的系统,其特征在于:所述排序单元以多字段的组合顺序为排序优先级,对包含多个不同属性字段的字符串进行排序,完成对临时字段的排序。
10.根据权利要求6所述的系统,其特征在于:所述多字段处理单元在对象中添加一属性作为排序的临时字段,完成临时字段的设置操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101635581A CN100524318C (zh) | 2007-10-15 | 2007-10-15 | 不同属性字段的排序方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101635581A CN100524318C (zh) | 2007-10-15 | 2007-10-15 | 不同属性字段的排序方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101136035A true CN101136035A (zh) | 2008-03-05 |
CN100524318C CN100524318C (zh) | 2009-08-05 |
Family
ID=39160130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101635581A Active CN100524318C (zh) | 2007-10-15 | 2007-10-15 | 不同属性字段的排序方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100524318C (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102332030A (zh) * | 2011-10-17 | 2012-01-25 | 中国科学院计算技术研究所 | 用于分布式键-值存储系统的数据存储、管理和查询方法及系统 |
WO2012119431A1 (zh) * | 2011-08-31 | 2012-09-13 | 华为技术有限公司 | 一种基于多值属性的排序方法和设备 |
CN103020272A (zh) * | 2012-12-27 | 2013-04-03 | 广东佳和通信技术有限公司 | 一种字符串的排序方法 |
CN103294694A (zh) * | 2012-02-27 | 2013-09-11 | 华为技术有限公司 | 一种数据库中关键字大小比较的方法及装置 |
CN103488794A (zh) * | 2013-10-10 | 2014-01-01 | 苏州灵巴巴网络科技有限公司 | 一种任意属性的数据库操作的Web实现方法 |
CN104135487A (zh) * | 2014-08-13 | 2014-11-05 | 成都西加云杉科技有限公司 | 数据发送方法、数据接收方法、装置和系统 |
CN106126559A (zh) * | 2016-06-16 | 2016-11-16 | 天脉聚源(北京)传媒科技有限公司 | 一种数据处理方法及装置 |
CN109766497A (zh) * | 2019-01-22 | 2019-05-17 | 网易(杭州)网络有限公司 | 排行榜生成方法及装置、存储介质、电子设备 |
CN110020227A (zh) * | 2017-10-31 | 2019-07-16 | 北京国双科技有限公司 | 一种数据排序方法和装置 |
CN112232069A (zh) * | 2020-10-10 | 2021-01-15 | 米奥兰特(浙江)网络科技有限公司 | 一种基于多模式数据的匹配处理方法及装置 |
CN114757162A (zh) * | 2022-04-26 | 2022-07-15 | 金蝶软件(中国)有限公司 | 表格数据显示方法、装置、计算机设备、存储介质 |
-
2007
- 2007-10-15 CN CNB2007101635581A patent/CN100524318C/zh active Active
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012119431A1 (zh) * | 2011-08-31 | 2012-09-13 | 华为技术有限公司 | 一种基于多值属性的排序方法和设备 |
CN102332030A (zh) * | 2011-10-17 | 2012-01-25 | 中国科学院计算技术研究所 | 用于分布式键-值存储系统的数据存储、管理和查询方法及系统 |
CN103294694B (zh) * | 2012-02-27 | 2016-09-14 | 华为技术有限公司 | 一种数据库中关键字大小比较的方法及装置 |
CN103294694A (zh) * | 2012-02-27 | 2013-09-11 | 华为技术有限公司 | 一种数据库中关键字大小比较的方法及装置 |
CN103020272A (zh) * | 2012-12-27 | 2013-04-03 | 广东佳和通信技术有限公司 | 一种字符串的排序方法 |
CN103488794A (zh) * | 2013-10-10 | 2014-01-01 | 苏州灵巴巴网络科技有限公司 | 一种任意属性的数据库操作的Web实现方法 |
CN104135487A (zh) * | 2014-08-13 | 2014-11-05 | 成都西加云杉科技有限公司 | 数据发送方法、数据接收方法、装置和系统 |
CN104135487B (zh) * | 2014-08-13 | 2018-07-20 | 成都西加云杉科技有限公司 | 数据发送方法、数据接收方法、装置和系统 |
CN106126559A (zh) * | 2016-06-16 | 2016-11-16 | 天脉聚源(北京)传媒科技有限公司 | 一种数据处理方法及装置 |
CN110020227A (zh) * | 2017-10-31 | 2019-07-16 | 北京国双科技有限公司 | 一种数据排序方法和装置 |
CN110020227B (zh) * | 2017-10-31 | 2021-10-15 | 北京国双科技有限公司 | 一种数据排序方法和装置 |
CN109766497A (zh) * | 2019-01-22 | 2019-05-17 | 网易(杭州)网络有限公司 | 排行榜生成方法及装置、存储介质、电子设备 |
CN109766497B (zh) * | 2019-01-22 | 2022-03-22 | 网易(杭州)网络有限公司 | 排行榜生成方法及装置、存储介质、电子设备 |
CN112232069A (zh) * | 2020-10-10 | 2021-01-15 | 米奥兰特(浙江)网络科技有限公司 | 一种基于多模式数据的匹配处理方法及装置 |
CN114757162A (zh) * | 2022-04-26 | 2022-07-15 | 金蝶软件(中国)有限公司 | 表格数据显示方法、装置、计算机设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100524318C (zh) | 2009-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100524318C (zh) | 不同属性字段的排序方法及系统 | |
CN101860449B (zh) | 一种数据查询方法、装置及系统 | |
CN102541529B (zh) | 一种查询页面生成装置和方法 | |
CN108090073B (zh) | 一种可配置物料清单的转换方法及装置 | |
CN101515211B (zh) | 一种手写输入方法、装置和用户终端 | |
CN100483417C (zh) | 获取限制词信息的方法、优化输出的方法和输入法系统 | |
US20050278292A1 (en) | Spelling variation dictionary generation system | |
CA2348239C (en) | Culturally correct ordering of keyed records | |
CN103186560B (zh) | 一种数据排序方法以及相关装置 | |
CN112560416B (zh) | 页面图表生成方法、装置、电子设备及存储介质 | |
CN111339166A (zh) | 基于词库的匹配推荐方法、电子装置及存储介质 | |
CN108960672B (zh) | 限额限次的风控方法、装置及计算机可读存储介质 | |
CN102750534A (zh) | 一种字符切分的方法和装置 | |
CN106406560B (zh) | 桌面操作系统中机械工程字符矢量字体输出方法和系统 | |
CN101510124A (zh) | 语境相关敏感提示输入法 | |
CN113505273A (zh) | 基于重复数据筛选的数据排序方法、装置、设备及介质 | |
CN112817592A (zh) | 一种基于实体注解的自动代码生成方法 | |
CN102479072B (zh) | 一种多表头报表的生成方法、装置及终端 | |
CN113378518B (zh) | 基于正则表达式的json数据格式替换方法、系统及存储介质 | |
CN112395856B (zh) | 文本匹配方法、装置、计算机系统及可读存储介质 | |
CN108280193A (zh) | 通过导入数据来快速建设产品数据库的方法和系统 | |
CN101707757A (zh) | 业务支撑系统中计费事件路由分拣实现方法 | |
CN105335899A (zh) | 一种电力线路智能命名系统 | |
CN1916888A (zh) | 识别双字节字符集字符数据的语言的方法和系统 | |
CN117236327B (zh) | 一种用于服务治理平台的自动映射方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |