一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据存储方法、数据查询方法、计算设备和存储介质与流程

2021-10-24 12:44:00 来源:中国专利 TAG:
1.本发明涉及数据处理
技术领域
:,特别涉及一种数据存储方法、数据查询方法、计算设备和存储介质。
背景技术
::2.在前端开发中,针对网页内容的分类和关联是比较常见的操作,网页内容一般为分类数据,分类数据指反映事物类别的数据,例如,人按性别分为男、女两类。目前,多通过分类表实现网页内容的分类和关联,常见的分类表的设计结构是为当前分类设定一个类别编码字段,类别编码字段包括父类id,即,当前分类的类别编码与其父类id相关联。当需要查询上述分类表中一个分类数据的所有子类时,需要通过递归方式逐行遍历,查询效率低下。3.为了提高查询效率,将上述分类表中类别编码字段定义为变长字符串,类别编码字段包括当前分类数据的父类的类别编码和父类id,多个id之间以逗号分隔,可见任一指定分类的类别编码字段与其父类的类别编码和父类id相关联。此时,可以通过单where条件sql语句查询指定分类的所有子类,单where条件sql语句即遍历一次分类表,此时不需要递归方式。但是,若要查询指定分类的任一子类、根据查询结果得到指定分类对应的树形菜单或使得查询结果包括分类数据自身,需要额外加入where条件,即,需要多次遍历分类表才能实现,但是多次遍历分类表导致查询效率低下。技术实现要素:4.为此,本发明提供一种数据存储方法、数据查询方法,以力图解决或者至少缓解上面存在的问题。5.根据本发明的一个方面,提供了一种数据存储方法,在计算设备中执行,计算设备与存储装置通信连接,存储装置中存储有分类表,分类表中包括类别编码字段,所述方法包括:获取与待存储数据所对应的父类的类别编码,作为第一编码;生成待存储数据在第一编码下的、预设长度的子类别编码,作为第二编码;按照预定的顺序,将第二编码拼接至第一编码后,得到待存储数据的类别编码;将待存储数据与其类别编码关联为一个数据项,存储至分类表。6.可选地,生成待存储数据在第一编码下的子类别编码的步骤包括:生成待存储数据在第一编码下的唯一子类别编码。7.可选地,生成待存储数据在第一编码下的唯一子类别编码的步骤包括:获取分类表中针对第一编码所生成的所有子类别编码中的最大子类别编码,其中,任一针对第一编码所生成的子类别编码的长度为预设长度;对最大子类别编码进行增加处理,得到待存储数据在第一编码下的子类别编码。8.可选地,预定的顺序为由左至右的顺序,或者为由右至左的顺序。9.根据本发明的又一个发明,提供了一种数据查询方法,在计算设备中执行,方法适于从上述的数据存储方法得到的分类表中查询数据,分类表包括一个或多个数据项,每一数据项包括类别编码字段,所述方法包括:获取查询指令,查询指令至少包括第三编码,第三编码为当前输入的类别编码;从分类表中筛选与第三编码相关联的数据项,以得到待查询数据。10.可选地,从分类表中筛选与第三编码相关联的数据项的步骤包括:从分类表中查找以第三编码为开头、类别编码长度不低于第三编码长度的所有数据项。11.可选地,任一数据项中还包括分类数据名称,方法还包括步骤:确定已查找的各数据项的类别编码长度;以类别编码长度作为缩进量、按照类别编码升序排序显示已查找数据项的分类数据名称,得到当前输入的类别编码所对应分类数据的树形菜单。12.可选地,从分类表中筛选与第三编码相关联的数据项的步骤包括:从分类表中查找以第三编码为开头、类别编码长度与预设分类数据类别编码长度相同的数据项。13.可选地,通过如下公式确定预设分类数据类别编码长度:length=(m n*x)其中,length为预设分类数据类别编码长度,m为第三编码长度n为预设分类数据类别距第三编码对应数据类别的层级,x为每个层级的类别编码长度。14.可选地,从分类表中筛选与第三编码相关联的数据项的步骤包括:从分类表中查找以第三编码为开头、类别编码长度大于第三编码长度的所有数据项。15.根据本发明的另一个发明,提供了一种数据查询系统,包括客户端、计算设备和存储装置,计算设备分别与客户端、存储装置通信连接;客户端,在监测到输入类别编码的动作时,适于根据输入的类别编码生成查询指令,并发送至计算设备;存储装置,适于存储分类表,分类表由上述的数据存储方法得到的;计算设备,适于获取客户端发送的查询指令,从分类表中筛选与查询指令的类别编码相关联的数据项,以得到待查询数据。16.根据本发明的一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述方法的指令。17.根据本发明的一个方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述的方法。18.根据本发明的技术方案,提供了一种数据存储方法,该方法首先获取与待存储数据所对应的父类的类别编码,作为第一编码,生成待存储数据在第一编码下的、预设长度的子类别编码,作为第二编码,按照预定的顺序,将第二编码拼接至第一编码后,得到待存储数据的类别编码,将待存储数据与其类别编码关联为一个数据项,存储至分类表。19.可见,本方案中是通过类别编码对数据进行分类,且类别编码由父类的类别编码和父类类别编码下的子类别编码组成,且第二编码长度固定,即,分类等级越高的数据的类别编码长度越小,分类等级越低的数据的类别编码长度越大,且相邻等级分类数据之间相差的编码个数为第二编码的个数。可根据类别编码的上述规律设置单where查询条件,即可通过单where条件sql语句查询指定分类的所有或任一子类,且查询结果可包括指定分类自身,从而提高数据查询效率。20.本发明又提供了一种数据查询方法,该方法中,从分类表中筛选与已输入的类别编码相关联的数据项,以得到待查询分类数据。由上述内容可知,本发明是以分类数据的类别编码和类别编码长度作为单where条件,即,可通过单where条件sql语句查询与分类数据相关联的任意一个或多个数据,提高了数据查询的效率和灵活性。21.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明22.为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。23.图1示出了根据本发明一个实施例的树形菜单的示意图;图2示出了根据本发明一个实施例的计算设备200的结构图;图3示出了根据本发明一个实施例的数据存储方法300的流程图;图4示出了根据本发明一个实施例的类别编码生成逻辑的示意图;图5示出了根据本发明一个实施例的数据查询系统500的示意图;以及图6示出了根据本发明一个实施例的数据查询方法600的流程图。具体实施方式24.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。25.在前端开发中,针对网页内容的分类和关联是比较常见的操作,网页内容一般为分类数据,分类数据指反映事物类别的数据,例如,人按性别分为男、女两类,服装分为男装、女装等。26.目前,多通过分类表实现网页内容的分类和关联,常见的分类表的设计结构是为各分类设定一个类别编码字段,类别编码字段为整型,分类数据的类别编码字段包括其父类id。如表1所示,表1示出了常见分类表的部分内容。其中,id为分类数据id,name为分类数据名称,pid为分类数据的类别编码。27.表1idnamepid1it02编程语言13golang2由表1可知,it为所有内容的父类别,即,it为根类别,id为1,其没有父类别,所以pid为0,编程语言的id为2,父类别为it,因此编程语言的pid为父类别it的id,即pid为1。进一步地,golang的id为3,其父类是编程语言,因此pid为2。当需要查询上述分类表中任一分类数据的所有子类时,需要通过递归方式逐行遍历,递归方式例如通过递归cte语法或者递归算法,查询效率低下。28.为了解决上述问题,将上述分类表中类别编码字段定义为变长字符串,即varchar类型,类别编码字段包括父类的类别编码和父类id,即类别编码字段包括当前分类数据的上级所有分类的id(例如包括父类别id、祖父id、祖先类别id等),多个id之间以逗号分隔,如表2所示,表2示出了更改pid字段后的分类表的部分内容。其中,id为分类数据id,name为分类数据名称,pid为分类数据的类别编码,任一分类数据的pid包括其父类pid和父类id。29.表2idnamepid1it02编程语言115golang1,24golang入门1,2,155golang进阶1,2,15由表2可知,it为所有内容的父类别,即it为根类别,id为1,其没有父类别,所以pid为0。进一步地,golang的id为15,其父类别是编程语言,编程语言的id为2、pid为1,因此golang的pid为“1,2”,依此类推,golang入门的id为4,其父类别为golang,golang的id为15、pid为“1,2”,因此golang入门的pid为“1,2,15”。30.上述的分类表可以直接查询出分类表中一个指定内容的所有子类,但是,无法通过单where条件sql语句查询包括分类数据和其所有子类的数据,也无法通过单where条件sql语句查询分类数据的任一子类和树形菜单,也即,需要多次遍历分类表才能得到包括分类数据自身和其所有子类的数据,以及任一分类时间的树形菜单,导致数据查询效率低下。其中,树形菜单,是显示层级关系的结构,如图1所示,图1示出了根据本发明一个实施例的树形菜单的示意图。31.为了解决上述问题,本发明首先提供了一种数据存储方法,在计算设备200中执行,计算设备200可以实现为服务器,例如应用服务器、web服务器等;也可以实现为桌面电脑、笔记本电脑、处理器芯片、平板电脑等,但不限于此。图2示出了根据本发明一个实施例的计算设备200的结构图。如图2所示,在基本配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。32.取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(µp)、微控制器(µc)、数字信息处理器(dsp)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(alu)、浮点数单元(fpu)、数字信号处理核心(dsp核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。33.取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如ram)、非易失性存储器(诸如rom、闪存等)或者它们的任何组合。系统存储器206可以包括操作系统220、一个或者多个应用222以及程序数据224。在一些实施方式中,应用222可以布置为在操作系统上利用程序数据224进行操作。程序数据224包括指令,在根据本发明的计算设备200中,程序数据224包含用于执行数据存储方法300和数据查询方法600的指令。34.计算设备200还包括储存设备232,储存设备232包括可移除储存器236和不可移除储存器238,可移除储存器236和不可移除储存器238均与储存接口总线234连接。本发明中,程序执行过程中发生的各事件的相关数据和指示各事件发生的时间信息,可存储于储存设备232中,操作系统220适于管理储存设备232。其中,储存设备232可为磁盘。35.计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图像处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个a/v端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个i/o端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。36.网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(rf)、微波、红外(ir)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。37.计算设备200可以实现为服务器,例如文件服务器、数据库服务器、应用程序服务器和web服务器等,也可以实现为小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、个人数字助理(pda)、个人媒体播放器设备、无线网络浏览设备、个人头戴设备、应用专用设备、或者可以包括上面任何功能的混合设备。计算设备200还可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。在一些实施例中,计算设备200被配置为执行根据本发明的一种数据存储方法300和数据查询方法600。38.图3示出了根据本发明一个实施例的数据存储方法300的流程图。方法300适于在计算设备200中执行,计算设备与存储装置通信连接,存储装置中存储分类表,数据存储方法300的目的是将分类数据存储在一个分类表中,分类表中包括分类数据id字段、分类数据名称字段和类别编码字段。数据存储方法300包括步骤s310至步骤s340。39.在一个实施方式中,与计算设备200通信连接的存储装置可以是数据库,进一步地,数据库可以是关系型数据库,例如mysql、sqlserver、access等,存储装置的数据库可以是驻留于计算设备200中的本地数据库,也可以作为分布式数据库例如hbase等设置于多个地理位置处;存储装置也可以是缓存,例如redis缓存等,总之存储装置用于存储本发明中生成的分类表。本发明对存储装置的具体部署、配置情况不做限制。40.首先执行步骤s310,获取与待存储数据所对应的父类的类别编码,作为第一编码,接着执行步骤s320,生成待存储数据在第一编码下的、预设长度的子类别编码,作为第二编码。41.需要说明的是,生成的第二编码的长度是预设长度,可以理解为每次为待存储数据生成的第二编码的长度是固定不变的。且在第二编码长度不变的基础之上,生成的第二编码大于针对第一编码所生成的所有子类别编码中最大的子类别编码。42.在一个实施方式中,步骤s320包括:获取分类表中针对第一编码所生成的所有子类别编码,其中,任一针对第一编码所生成的子类别编码的长度均为预设长度,获取分类表中针对第一编码所生成的所有子类别编码中的最大子类别编码,对最大子类别编码进行增加处理,以使最大子类别编码变大,得到待存储数据在第一编码下的子类别编码,即得到第二编码。43.值得注意的是,预设长度可以根据同级分类的个数进行设置,可以将预设长度设置为2、3、4等,只要满足实际应用场景的需求即可。例如,预设长度为2,那么待存储数据的类别编码的第二编码长度为2,长度为2的编码可以包括00‑99,也就是说,预设长度为2时可以满足包括100个同级分类的情况。44.还需注意的是,若分类表中并无数据项,即分类表为空,那么第一编码和针对第一编码所生成的所有子类别编码为空,也就是说,待存储数据为根类别。当待存储数据为根类别时,可为待存储数据的第二编码设置一个初始编码,若预设长度为2,初始编码可以为00,若预设长度为3,初始编码可以为000。将第一编码和生成的第二编码进行拼接,即将第一编码和初始编码进行拼接,由于第一编码为空,因此待存储数据的类别编码即为初始编码。45.生成待存储数据的第二编码后,执行步骤s330,按照预定的顺序,将第二编码拼接至第一编码后,得到待存储数据的类别编码。在一个实施方式中,预定的顺序可以为由左至右的顺序,或者为由右至左的顺序。最后执行步骤s340,将待存储数据与其类别编码关联为一个数据项,存储至分类表。数据项可以为文章发布系统的文章发布数据或者树形菜单结构下的菜单项。需要说明的是,每当存储一个分类数据时,均需执行步骤s310至步骤s340。46.下面以预设长度为2、按照由左至右的顺序将第二编码拼接至第一编码之后、当前的分类表为空、预设编码为00、待存储数据为上述的文章发布系统的文章发布数据为例,对文章发布数据存储的过程进行说明:假设文章发布系统的文章发布数据可包括根类别it,it包括两个子类,分别为编程语言和数据库,编程语言的子类包括golang和php,数据库的子类包括mysql和oracle。此时,编程语言和数据库为it的第一级子类,golang、php、mysql和oracle为it的第二级子类。47.首先存储根类别数据it:获取待存储数据的名称为“it”,为其分配id为1,由于“it”为文章发布系统的文章发布数据的根类别,因此其父类的类别编码为空,此时将预设编码00作为“it”的类别编码。将待存储数据名称“it”、id“1”和类别编码“00”作为一个数据项,存储至分类表的第一行(此处的第一行为除了字段行的第一行)。48.接着存储it的第一级子类数据,分别为编程语言和数据库:获取“it”的第一子类、第二子类的名称,分别为“编程语言”、“数据库”,为“编程语言”、“数据库”分配的id分别为2、5。此时存在两个同级子类“编程语言”和“数据库”,这两个子类的父类的类别编码均为“it”类别编码“00”,即,“编程语言”和“数据库”类别编码的第一编码均为“00”。由于存在两个同级子类“编程语言”和“数据库”,因此两个子类的第二编码长度相同、字符不同即可,此时为“编程语言”和“数据库”生成的第二编码分别作为“00”、“01”,按照由左至右的顺序将第二编码拼接至第一编码之后得到“编程语言”和“数据库”的类别编码分别为0000、0001。将“it”的第一子类名称“编程语言”、id“2”和类别编码“0000”作为一个数据项,存储至分类表的第二行,将“it”的第二子类名称“数据库”、id“5”和类别编码“0001”作为一个数据项,存储至分类表的第五行。49.之后存储编程语言的子类,分别为golang和php,即,存储it的第二级子类数据,分别为golang和php:获取“编程语言”的第一子类、第二子类的名称,分别为“golang”、“php”,为“golang”、“php”分配的id分别为3、4。此时存在两个同级子类“golang”和“php”,这两个子类的父类的类别编码均为“编程语言”的类别编码“0000”,即,“golang”和“php”类别编码的第一编码均为“0000”。由于存在两个同级子类“golang”和“php”,同样地,两个子类的第二部分字符长度相同、字符不同即可,此时为“编程语言”和“数据库”生成的第二编码分别作为“00”、“01”,按照由左至右的顺序将第二编码拼接至第一编码之后得到“golang”和“php”的类别编码分别为000000、000001。将“编程语言”的第一子类名称“golang”、id“3”和类别编码“000000”作为一个数据项,存储至分类表的第三行,将“编程语言”的第二子类名称“php”、id“4”和类别编码“000001”作为一个数据项,存储至分类表的第四行。50.最后存储数据库的子类,分别为mysql和oracle,即,存储it的第二级子类数据,分别为mysql和oracle:获取“数据库”的第一子类、第二子类的名称,分别为“mysql”、“oracle”,为“mysql”、“oracle”分配的id分别为6、7。此时存在两个同级子类“mysql”和“oracle”,这两个子类的父类的类别编码均为“数据库”类别编码“0001”,即,“mysql”和“oracle”类别编码的第一编码均为“0001”。由于存在两个同级分类“mysql”和“oracle”,此时为ꢀ“mysql”、“oracle”生成的第二编码分别为“00”、“01”,按照由左至右的顺序将第二编码拼接至第一编码之后得到“mysql”和“oracle”的类别编码分别为000100、000101。将“数据库”的第一子类的名称“mysql”、id“6”和类别编码“000100”作为一个数据项,存储至分类表的第六行,将“数据库”的第二子类的名称“oracle”、id“7”和类别编码“000101”作为一个数据项,存储至分类表的第七行。待存储数据类别编码的生成逻辑如图4所示,图4示出了根据本发明一个实施例的类别编码生成逻辑的示意图。51.由上述内容得到了表3,表3中,id为分类数据id,name为分类数据名称,code为分类数据类别编码。52.表3idnamecode1it002编程语言00003golang0000004php0000015数据库00016mysql0001007oracle000101由表3可知,分类数据的分类等级越高,其code的长度越小,分类数据的分类等级越低,其code的长度越大,同一分类等级中类别编码按照升序排序(例如同为it的第一级子类编程语言和数据库,二者的类别编码分别为0000、0001),由于预设长度设置为两位,因此表3中相邻分类等级的分类数据code相差2个编码。53.由上述内容可知,本发明生成的分类表中包括多个数据项,每一数据项包括分类数据的id、名称和类别编码。另外,本发明生成的分类表中的类别编码与分类数据id无关,是与其父类的类别编码和同级分类的类别编码相关。54.由于分类数据的分类等级越高其code的长度越小,分类数据的分类等级越低其code的长度越大,同一分类等级中类别编码按照升序排序,且相邻分类等级的分类数据code相差预设长度个编码,因此可根据上述规律,将单where条件设置为类别编码和预设类别编码长度,再根据单where条件sql语句遍历分类表,即,遍历一次分类表,从中查询出与输入的类别编码相关联的、满足预设类别编码长度的一个或多个数据项,从而提高数据查询的效率。55.在一个实施方式中,通过如下公式确定预设分类数据类别编码长度:length=(m n*x)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(1)其中,length为预设分类数据类别编码长度,m为用户输入的编码长度,n为预设分类数据类别距第三编码对应数据类别的层级,也就是说,n为当前输入的类别编码下的子类数据在当前输入类别编码中所属的层级数,x为预设长度。56.例如,此处确定it的第二级子类数据的类别编码长度,由表3可知,it的类别编码为00,也就是说it的类别编码长度为2,表3中预设长度x为2,由it的第二级子类数据即可确定n为2,因此,it的第二级子类数据的类别编码长度为:2 2*2=6,即it的第二级子类数据的类别编码长度为6。57.为了解决上述问题,本发明还提供了一种数据查询系统,图5示出了根据本发明一个实施例的数据查询系统500的示意图,如图5所示,数据查询系统500包括多个客户端510(分别为客户端5101、客户端5102、客户端5103、……、客户端510n)、计算设备200和存储装置520,计算设备200分别与客户端510、存储装置520通信连接,例如通过有线或无线的方式网络连接。58.存储装置520用于存储通过上述的数据存储方法300得到的分类表,在一个实施方式中,与计算设备200通信连接的存储装置可以是数据库,进一步地,数据库可以是关系型数据库,例如mysql、sqlserver、access等,存储装置520的数据库可以是驻留于计算设备200中的本地数据库,也可以作为分布式数据库例如hbase等设置于多个地理位置处;存储装置520也可以是缓存,例如redis缓存等,总之存储装置520用于存储通过上述的数据存储方法300得到的分类表。本发明对存储装置520的具体部署、配置情况不做限制。59.在一个实施方式中,客户端510中安装有应用程序,应用程序可以为任一编程应用程序,本发明对应用程序不做限定,例如,应用程序可以是编写sql语句的应用程序。用户可在应用程序中输入类别编码,作为当前输入类别编码,并根据当前输入类别编码生成一个查询指令,发送至计算设备200。值得注意的是,客户端510可以实现为计算设备200。计算设备200如上所述,此处不再赘述。60.图6示出了根据本发明一个实施例的数据查询方法600的流程图。方法600适于在计算设备200中执行,数据查询方法600的目的是从存储装置520存储的分类表中查找与当前输入的类别编码相关联的数据,分类表的生成过程如上所述,分类表的内容如表3所示,此处不再赘述。数据查询方法600包括步骤s610至步骤s620。61.在执行步骤s610之前,用户在任一客户端510中输入类别编码,在一个实施方式中,用户在任一客户端510的、已下载编程应用程序中输入类别编码,当客户端510监测到用户输入类别编码的事件时,根据输入类别编码生成查询指令,并发送至计算设备200,查询指令中包括当前输入的类别编码,当前输入的类别编码在下文中称为第三编码。62.客户端510向计算设备200发送查询指令后,计算设备200执行步骤s610,获取查询指令,从查询指令中确定第三编码,并继续执行步骤s620,从分类表中筛选与第三编码相关联的数据项,以得到待查询数据。63.在一个实施方式中,步骤s620包括:从存储装置520的分类表中查找以第三编码为开头、类别编码长度不低于第三编码长度的所有数据项,即从存储装置520的分类表中查找第三编码所对应数据的数据项和第三编码所对应数据的所有下级分类的数据项。在一个实施方式中,可通过sql语句select*fromtablewherecodelikeꢀ‘第三编码%’实现,由于sql语句是单where条件sql语句,即遍历一次分类表即可查找第三编码所对应数据的数据项和第三编码所对应数据的所有下级分类的数据项,提高数据查询效率。64.值得注意的是,按照由左至右的顺序将第二编码拼接至第一编码之后,或者,按照由右至左的顺序将第二编码拼接至第一编码之后,均从存储装置520的分类表中查找以第三编码为开头、类别编码长度不低于第三编码长度的所有数据项。65.从分类表中筛选与第三编码相关联的数据项之后,在一个实施方式中,确定已查找的各数据项的类别编码长度,以类别编码长度作为缩进量、按照类别编码升序排序显示已查找数据项的分类数据名称,得到当前输入类别编码所对应分类数据的树形菜单。例如,通过sql语句selectid,name,length(code)lenfromtableorderbycode得到待查询分类数据的树形菜单。66.以表3所示的分类表为例,对从分类表中筛选与第三编码相关联的数据项、并显示树形菜单进行说明(表3中是按照由左至右的顺序将第二编码拼接至第一编码之后):若用户当前输入的类别编码为0000,即第三编码为0000,那么从存储装置520的分类表中查找以第三编码为开头、类别编码长度不低于第三编码长度的所有数据项,即,从表3所示的分类表中查找以0000为开头、code长度大于等于第三编码长度4的所有数据项,由表3可知,code中以0000为开头、code的长度大于等于第三编码长度4的分类数据名称分别为编程语言、golang、php,那么以0000为开头、code的长度大于等于第一编码的长度4的数据项包括三个,分别为(2、编程语言、0000)、(3、golang、000000)、(4、php、000001)。67.由于筛选出的数据项中code长度存在规律性,即分类数据的分类等级越高其code的长度越小,分类数据的分类等级越低其code的长度越大,同一分类等级中类别编码按照升序排序,且相邻分类等级的分类数据code相差预设长度个编码。因此以类别编码长度作为缩进量,使得层级越高的分类数据缩进量越小,层级越低的分类数据缩进量越大,实现分类数据的层级关系是逻辑有序的。且同一分类等级中类别编码按照升序排序,即将同一等级(编程语言的所有子类)的golang和php按照类别编码升序排序,由于golang的类别编码000000小于php的类别编码000001,因此golang排在php之前,从而此时通过本发明的查询方法得到的树形菜单如下:2编程语言3golang4php在一个实施方式中,步骤s620包括:从存储装置520的分类表中筛选以第三编码为开头、类别编码长度与预设类别编码长度相同的数据项,即从存储装置520的分类表中查找当前输入类别编码所对应分类数据的任一指定下级分类。在一个实施方式中,可直接通过sql语句select*fromtablewherecodelikeꢀ‘第三编码%’ꢀandlength(code)=n(例如n为6)实现。由于sql语句是单where条件sql语句,即遍历一次分类表即可查找第三编码所对应数据项的任一指定下级分类,提高数据查询效率。68.以表3所示的分类表为例,对从分类表中筛选与第三编码相关联的数据项进行说明(同样地,表3中按照由左至右的顺序将第二编码拼接至第一编码之后):若用户当前输入的类别编码为00,即第三编码为00(即类别编码长度为2)、预设长度为2、当前输入类别编码所对应分类数据的第一级子类,根据公式(1)确定预设分类数据类别编码长度为2 1*2=4,即预设分类数据类别编码长度为4。由表3可知,以00为开头、code的长度等于4的分类数据名称分别为编程语言、数据库,那么以00为开头、code的长度为4的数据项为两个,即类别编码00所对应分类数据的第一级子类包括两个数据项,分别为(2、编程语言、0000)、(5、数据库、0001)。69.在一个实施方式中,步骤s620包括:从存储装置520的分类表中查找以第三编码为开头、类别编码长度大于第三编码长度的所有数据项。在一个实施方式中,可通过sql语句select*fromtablewherecodelikeꢀ‘第三编码_%’实现。即遍历一次分类表即可查找第三编码所对应数据项的所有下级分类。70.以表3所示的分类表为例,对从分类表中筛选与第三编码相关联的数据项进行说明(同样地,表3中按照由左至右的顺序将第二编码拼接至第一编码之后):若用户当前输入的类别编码为0000,即第三编码为0000,那么从存储装置520的分类表中筛选以第三编码为开头、类别编码长度大于第三编码长度的所有数据项,即,从表3所示的分类表中查找以0000为开头、code的长度大于第三编码长度4的所有数据项,由表3可知,以0000为开头、code长度大于第三编码长度4的分类数据名称分别为golang、php,那么以0000为开头、code的长度大于第一编码的长度4的数据项共有两个,分别为(3、golang、000000)、(4、php、000001)。71.需要说明的是,每当用户在客户端510输入类别编码后,均执行步骤s610至步骤s620。72.由上述内容可知,本发明提供的数据查询方法,由于分类表中类别编码长度存在规律性,即分类数据的分类等级越高其code的长度越小,分类数据的分类等级越低其code的长度越大,且相邻分类等级的分类数据之间code长度相差的预设长度个编码,可根据上述规律预设分类数据类别编码长度,作为单where条件,即,可通过单where条件sql语句从分类表中查询与分类数据相关联的任意一个或多个数据,从而在避免递归查询的同时提高数据查询的灵活性和效率。73.另外,由于筛选出的数据项中code长度存在规律,即分类数据的分类等级越高其code的长度越小,分类数据的分类等级越低其code的长度越大,同一分类层级的分类数据按照类别编码升序排序,且相邻分类等级的分类数据code相差预设长度个编码。因此以类别编码长度作为缩进量、同一分类层级的分类数据按照类别编码升序排序,使得层级越高的分类数据缩进量越小、层级越低的分类数据缩进量越大,且同一分类等级中各分类数据按照类别编码升序排序,实现分类数据的层级关系是逻辑有序的,从而通过本发明的查询方法可以得到分类数据的树形菜单。74.这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、u盘、软盘、cd‑rom或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。75.在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的数据查询方法和数据存储方法。76.以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。77.在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。78.在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。79.类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。80.本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。81.本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。82.此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。83.此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。84.如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。85.尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本
技术领域
:内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜