CN104714974A - 一种查询语句解析与再处理的方法和装置 - Google Patents

一种查询语句解析与再处理的方法和装置 Download PDF

Info

Publication number
CN104714974A
CN104714974A CN201310692598.0A CN201310692598A CN104714974A CN 104714974 A CN104714974 A CN 104714974A CN 201310692598 A CN201310692598 A CN 201310692598A CN 104714974 A CN104714974 A CN 104714974A
Authority
CN
China
Prior art keywords
clause
query
key word
query statement
group
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.)
Pending
Application number
CN201310692598.0A
Other languages
English (en)
Inventor
范钢
偶瑞军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Aisino Corp
Original Assignee
Aisino Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Aisino Corp filed Critical Aisino Corp
Priority to CN201310692598.0A priority Critical patent/CN104714974A/zh
Publication of CN104714974A publication Critical patent/CN104714974A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种查询语句解析与再处理的方法和装置,其中方法包括:定义一个类,所述类包含6项属性,分别对应标准查询语句的6个查询子句;根据用户提供的原始查询语句和查询参数集,将所述原始查询语句的主查询语句解析为6个查询子句,包括select、from、where、group by、having、order by,并用查询对象对应的6个属性分别将得到的查询子句进行存储;在查询对象中,分别对解析后的查询子句进行分页、分组、排序至少一项的处理;根据所述处理后,重新拼装进而形成新的查询语句及其查询参数,执行查询操作。

Description

一种查询语句解析与再处理的方法和装置
技术领域
本发明涉及数据库查询领域,具体而言,涉及一种查询语句解析与再处理的方法和装置。
背景技术
目前市面上各个大型web(网络)系统、大型信息化管理系统都普遍存在大型数据库查询的需求,过去在进行数据库查询时通常都是写死在各个功能模块中。但随着软件技术的发展,越来越多的软件系统都尝试采用平台式开发,以期降低整体研发成本与研发周期。在这样一个整体背景下,各种通用查询方案孕育而生。在所有通用查询方案中几乎都无法绕过一个重要的技术课题,那就是对查询语句的解析,从而实现对查询语句的分页、排序、分组功能的处理等等。
在这样一个背景下,各大软件厂商都提出了各自不同的对查询语句的解析与处理的方案与设计,但这些方案与设计普遍存在两个方面的问题:
1)过程过于复杂与庞大。大多数方案都尝试对查询语句的完全解析,而由于查询语句自身的复杂与多变,完全解析需要考虑的情况实在太多,使得这些解决方案陷入了无法穷解的尴尬境地。查询语句的解析与处理真的需要对原有查询语句进行完全解析吗?处理过程过于复杂必然造成设计成本的增加、出错风险的加大与维护难度的激增。如果客户需求并不需要这种完全的解析就可以解决问题,那么这样的设计必然造成一种浪费。因此本方法本着务实与精炼的思想,另辟蹊径提出了新的设计思路。
2)处理过于简单而未考虑性能。许多诸如分页、排序、分组等方案,采用了一些过于简单、易于实现的方式。但这些方式在进行数据查询往往会出现效率低下的问题,特别在面对超大数据库的状况下。因此本方法在许多地方的设计更加着眼于在面对超大数据库的性能问题,并在实际应用中获得了较好的效果。
3)未着眼于开发人员的使用。这里对查询语句的解析与处理,其目的就是要为开发人员提供通用的开发平台,提供通用的查询功能。因此,该功能针对的客户群是开发人员,在设计上应当更多地考虑开发人员使用的便捷、易用与灵活。因此本方法充分考虑了这些方面的问题,并在实际项目中得到了广泛的应用。
发明内容
本发明提供一种查询语句解析与再处理的方法和装置,通过对查询语句的处理,一方面可以方便开发人员以更加灵活便捷地方式设计查询功能,另一方面为原始的查询语句提供了高效分页查询、动态排序与分组等功能,为大型管理系统设计通用查询平台创造了条件。
为达到上述目的,本发明提供了一种查询语句解析与再处理的方法,包括以下步骤:
定义一个类,所述类包含6项属性,分别对应标准查询语句的6个查询子句;
根据用户提供的原始查询语句和查询参数集,将所述原始查询语句的主查询语句解析为6个查询子句,包括select、from、where、group by、having、order by,并用查询对象对应的6个属性分别将得到的查询子句进行存储,其中所述原查询语句包含至少一个查询子句,对于所述原查询语句不包含的查询子句,所述类对应的属性为空;
在查询对象中,分别对解析后的查询子句进行分页、分组、排序至少一项的处理。
根据所述处理后,重新拼装进而形成新的查询语句及其查询参数,执行查询操作。
进一步地,所述标准查询语句的6个查询子句分别为select、from、where、group by、having、order by,对应于所述类中的6项属性分别为SqlProxy.select、SqlProxy.from、SqlProxy.where、SqlProxy.groupBy、SqlProxy.having、SqlProxy.orderBy,对所述原查询语句的解析过程如下:
找出没有包含在任何括号中的以下关键字:select、from、where、group by、having、order by;
将在select与from之间的select子句存储在SqlProxy.select属性中;
from子句位于from与where之间,在检查时如果没有where关键字则检查group by关键字,如果也没有则检查order by关键字,如果还没有则从from关键字一直检查至字符串结束,将from子句存储在SqlProxy.from属性中;
如果有where关键字,在where与group by之间的是where子句,如果没有group by关键字则在where与order by之间,否则一直包含到字符串结束,将where子句存储在SqlProxy.where属性中;
如果有group by关键字,同时有having关键字,则group by与having之间的是group by子句,如果有order by关键字则having与order by之间是having子句,如果没有order by关键字则从having到结尾的是having子句;如果没有having关键字,如果有order by关键字则group by与order by之间的是group by子句,如果没有order by关键字则从group by到结尾的是groupby子句;将group by子句和having子句分别存储到SqlProxy.groupBy和SqlProxy.having属性中;
如果有order by关键字,则将该关键字后的字符存储到SqlProxy.orderBy属性中。
进一步地,如果用户传递参数时传递了变量page与size,则将对该查询提供分页查询的功能,使其只查询变量page对应页所需的数据,其中,在第一次查询时计算出页数与行数的总数据量,并与变量page和size一起计算出“第n页/共m页”和“第x条/共y条”信息,其中变量page为第几页,变量size为每页多少行,n、m、x、y均为自然数。
进一步地,如果用户传递参数时传递了变量ordering,则对原查询拆分后的order by子句进行替换更新,将更新后的各个子句重新进行拼装,形成新的查询语句,执行排序查询。
进一步地,如果用户传递参数时传递了变量groupBy、having,则对原查询拆分后的group by子句进行替换更新,将更新后的各个子句重新进行拼装,形成新的查询语句,执行分组查询。
为达到上述目的,本发明还提供了一种查询语句解析与再处理的装置,包括:
解析模块,首先定义一个类,所述类包含6项属性,分别对应标准查询语句的6个查询子句;
根据用户提供的原始查询语句和查询参数集,将所述原始查询语句的主查询语句解析为6个查询子句,包括select、from、where、group by、having、order by,并用查询对象对应的6个属性分别将得到的查询子句进行存储,其中所述原查询语句包含至少一个查询子句,对于所述原查询语句不包含的查询子句,所述类对应的属性为空;
处理模块,在查询对象中,分别对解析后的查询子句进行分页、分组、排序至少一项的处理。
根据所述处理后,重新拼装进而形成新的查询语句及其查询参数,执行查询操作。
进一步地,所述标准查询语句的6个查询子句分别为select、from、where、group by、having、order by,对应于所述类中的6项属性分别为SqlProxy.select、SqlProxy.from、SqlProxy.where、SqlProxy.groupBy、SqlProxy.having、SqlProxy.orderBy,对所述原查询语句的解析过程如下:
找出没有包含在任何括号中的以下关键字:select、from、where、group by、having、order by;
将在select与from之间的select子句存储在SqlProxy.select属性中;
from子句位于from与where之间,在检查时如果没有where关键字则检查group by关键字,如果也没有则检查order by关键字,如果还没有则从from关键字一直检查至字符串结束,将from子句存储在SqlProxy.from属性中;
如果有where关键字,在where与group by之间的是where子句,如果没有group by关键字则在where与order by之间,否则一直包含到字符串结束,将where子句存储在SqlProxy.where属性中;
如果有group by关键字,同时有having关键字,则group by与having之间的是group by子句,如果有order by关键字则having与order by之间是having子句,如果没有order by关键字则从having到结尾的是having子句;如果没有having关键字,如果有order by关键字则group by与order by之间的是group by子句,如果没有order by关键字则从group by到结尾的是groupby子句;将group by子句和having子句分别存储到SqlProxy.groupBy和SqlProxy.having属性中;
如果有order by关键字,则将该关键字后的字符存储到SqlProxy.orderBy属性中。
进一步地,如果用户传递参数时传递了变量page与size,则将对该查询提供分页查询的功能,使其只查询变量page对应页所需的数据,其中,在第一次查询时计算出页数与行数的总数据量,并与变量page和size一起计算出“第n页/共m页”和“第x条/共y条”信息,其中变量page为第几页,变量size为每页多少行,n、m、x、y均为自然数。
进一步地,如果用户传递参数时传递了变量ordering,则对原查询拆分后的order by子句进行替换更新,将更新后的各个子句重新进行拼装,形成新的查询语句,执行排序查询。
进一步地,如果用户传递参数时传递了变量groupBy、having,则对原查询拆分后的group by子句进行替换更新,将更新后的各个子句重新进行拼装,形成新的查询语句,执行分组查询。
本发明为开发人员进行数据查询提供了许多便捷、易用与灵活的功能,它与其它同类型的查询语句解析与再处理方法比较,其优势在于:
1)采用了更加简便务实的查询语句解析方式,实现更加简单,运行更加高效、维护更加容易,降低了程序复杂度。
2)提供了更加高效地分页查询方案,以适应超大型数据库的应用,同时降低了开发人员设计该功能的技术门槛。
3)提供了简便易用的排序与分组方案,使查询报表中排序与分组的设计更加容易。
4)采用了更加易扩展的设计方式,使开发人员可以方便地调整现有功能,扩展新功能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一个实施例的查询语句解析与再处理的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明要解决的问题是如何为大型软件管理系统提供一个方便开发、运行高效的数据查询方案。要解决该问题主要要解决以下问题:提供分页查询的方案、提供排序和分组方案。为了解决以上这些问题就需要对原查询语句进行调整,通过一定的规则生成新的查询语句,因此一个首要的问题是对原查询语句进行解析。以往的查询语句往往都是对查询语句进行完全地解析,即通过对查询语句中语义的识别,解析出主查询语句及其子查询语句中的各个部分。由于查询语句自身的特点,在实际应用中总是灵活多变,要对其进行完全解析就必须要穷举所有的变化,使解析的过程非常复杂,还会漏掉一些特殊情况,使解析过程不稳定,造成一些意想不到的错误发生。程序越复杂越容易出错,越是使一些特殊的情况不能穷举。
仔细分析了本发明需要解决的几个问题后,我们发现其实不需要对查询语句进行完全解析就能解决以上问题。为查询语句提供参数方案和提供动态添加查询条件的方案不需要解析查询语句,而提供分页查询的方案与提供排序和分组方案只需要解析最外层查询语句。因此本发明最终只进行最外层查询语句的解析,即复杂查询语句中各种子查询以外的那一层查询语句,以降低设计的复杂度。
另外,本发明在实现分页查询时,采用了一种更加高效的方式进行。以往的查询系统往往采用先对查询语句执行查询,再在返回结果中选出本页需要显示的十来条记录,返回给前端。采用这种查询方式,如果执行查询的结果有几十万条,先执行查询,再在几十万条记录中选择本页需要显示的十来条记录,必然对系统资源造成浪费,同时带来系统性能的下降。这种方式不适合超大型数据库的查询需求。本发明则不同,它首先对查询语句进行处理,使得新的查询语句在数据库中执行时,只要查询到本页所需数据则不再继续查询。特别是在报表分页查询时,对第一页的查询最为频繁。假设该查询语句执行结果为50万记录,而第一页只有15条记录,则本发现在执行查询时,数据库只查询并返回这15条记录,应用服务器也只对这15条记录进行处理并返回前端,则系统性能将大大提高。
此外,本发明还为开发人员提供了分页查询、排序、分组、求和等功能。只要开发人员在传递的参数中包含了page、size变量则执行分页查询;包含了ordering等变量则执行排序;包含了groupBy、having等变量则进行分组;开发人员执行count()方法则对原查询语句执行求和。所有这些功能都是在对原有查询语句进行调整的基础上实现的。
最后,本发明采用了一种松耦合、易扩展的设计方式,使开发人员可以根据需要扩展新的查询语句处理过程、调整原有功能的执行顺序,等等。
以下对本发明的具体实施例进行详细阐述。
本发明对查询语句的处理分为查询语句解析、分页查询功能、排序功能与分组功能这四个部分。
1、查询语句解析
为了后面的处理,本发明在这里对查询语句进行解析。但正如前面所述,本发明并不是对整个查询语句进行完全的解析,而是对最外层的主查询语句进行解析,即将主查询语句解析成select、from、where、group by、having、order by这6个子句,用一个对象对它们分别进行存储。解析方式采用最简单的方式,过程如下:
1)找出没有包含在任何括号中的以下关键字:select、from、where、groupby、having、order by。
2)在select与from之间的是select子句,存储在SqlProxy.select属性中。
3)在from与where之间的是from子句,如果没有where关键字则检查group by关键字,如果也没有则检查order by关键字,如果还没有则从from关键字一直到字符串结束,将from子句存储在SqlProxy.from属性中。
4)如果有where关键字,在where与group by之间的是where子句,如果没有group by关键字则在where与order by之间,否则一直包含到字符串结束,将where子句存储在SqlProxy.where属性中。
5)如果有group by关键字,同时有having,则group by与having之间的是group by子句,如果有order by关键字则having与order by之间是having子句,如果没有order by关键字则having到结尾是having子句;如果没有having关键字,如果有order by关键字则group by与order by之间是group by子句,如果没有order by关键字则group by到结尾是group by子句。将groupby子句和having子句分别存储到SqlProxy.groupBy和SqlProxy.having属性中。
6)如果有order by关键字,则将该关键字后的字符存储到SqlProxy.orderBy属性中。
本发明的查询语句解析算法中不处理形如union操作的语句,如果出现这些情况需要将查询语句拆分成两个查询语句分别处理。另外,查询语句中的关键字不区分大小写,解析时统一都转换为小写处理。
2、分页查询功能
如果开发人员传递参数时传递了变量page与size,则本发明将对该查询提供分页查询的功能。在超大型数据库环境中分页查询的最优方案是通过对查询语句进行处理,使其只查询该页所需的数据。同时,第一次查询时将原查询语句转换为count(*)查询以计算出总数据量,并与page和size变量一起计算出“第n页/共m页”和“第x条/共y条”等信息。
分页查询处理过程如下:
1)将变量page(第几页)与size(每页多少行)转换为此次要查询从firstRow行到lastRow行。
2)将查询语句转换为以下形式:
select*from(select row_.*,rownum rownum_from(
...查询语句...
)row_where rownum<=lastRow)where rownum_>firstRow
如果数据采用的不是Oracle,如MS SQL Server,则有相应的实现类将语句转换成TOP语句的形式。
采用该形式,数据库在执行查询是不会对所有数据进行查询,而是只查询本页所需的数据就可以了,这样可以有效提高分页查询的运行效率。
3)如果是第一次查询,则需要通过count(*)语句查询总记录数。将解析后的查询语句中的select子句改写为select count(*),同时清除原有的groupby、having、order by子句,重新拼装查询语句执行查询,得到该查询语句执行查询的总记录数。结合变量page和size计算出总记录数和总分页数。
4)将处理好的查询语句交给查询模块执行查询,然后返回给前端数据结果,及总记录数和总分页数等信息。
3、排序功能与分组功能
如果开发人员在编写查询语句时就写好了order by或者group by语句,系统对排序与分组功能的处理当然不用这样麻烦,但实际应用中却往往不是这样。就拿排序为例,许多查询报表只是把查询语句中order by的顺序作为默认顺序。当用户在使用报表过程中点击了表头,则报表需要清除原有顺序,根据用户点击的表头进行重新排序。注意,这里所说的排序功能不是本页排序,而是全结果排序。为了实现该功能,系统需要调整原有查询语句,将原查询语句中的order by子句清除,替换为新的order by子句插入到查询语句中,重新执行查询。
尽管如此,由于前面已经进行了查询语句的解析,处理这样的问题并不难。不论是group by、having,还是order by子句,只需要对拆分后的子句进行替换。最后当查询模块开始执行查询时,将更新后的各个子句重新进行拼装,形成新的查询语句,就可以由查询模块进行查询了。
本发明为开发人员进行数据查询提供了许多便捷、易用与灵活的功能,它与其它同类型的查询语句解析与再处理方法比较,其优势在于:
1)采用了更加简便务实的查询语句解析方式,实现更加简单,运行更加高效、维护更加容易,降低了程序复杂度。
2)提供了更加高效地分页查询方案,以适应超大型数据库的应用,同时降低了开发人员设计该功能的技术门槛。
3)提供了简便易用的排序与分组方案,使查询报表中排序与分组的设计更加容易。
4)采用了更加易扩展的设计方式,使开发人员可以方便地调整现有功能,扩展新功能。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。

Claims (10)

1.一种查询语句解析与再处理的方法,其特征在于,包括以下步骤:
定义一个类,所述类包含6项属性,分别对应标准查询语句的6个查询子句;
根据用户提供的原始查询语句和查询参数集,将所述原始查询语句的主查询语句解析为6个查询子句,包括select、from、where、group by、having、order by,并用查询对象对应的6个属性分别将得到的查询子句进行存储,其中所述原查询语句包含至少一个查询子句,对于所述原查询语句不包含的查询子句,所述类对应的属性为空;
在查询对象中,分别对解析后的查询子句进行分页、分组、排序至少一项的处理,根据所述处理后,重新拼装进而形成新的查询语句及其查询参数,执行查询操作。
2.根据权利要求1所述的查询语句解析与再处理的方法,其特征在于,所述标准查询语句的6个查询子句分别为select、from、where、group by、having、order by,对应于所述类中的6项属性分别为SqlProxy.select、SqlProxy.from、SqlProxy.where、SqlProxy.groupBy、SqlProxy.having、SqlProxy.orderBy,对所述原查询语句的解析过程如下:
找出没有包含在任何括号中的以下关键字:select、from、where、group by、having、order by;
将在select与from之间的select子句存储在SqlProxy.select属性中;
from子句位于from与where之间,在检查时如果没有where关键字则检查group by关键字,如果也没有则检查order by关键字,如果还没有则从from关键字一直检查至字符串结束,将from子句存储在SqlProxy.from属性中;
如果有where关键字,在where与group by之间的是where子句,如果没有group by关键字则在where与order by之间,否则一直包含到字符串结束,将where子句存储在SqlProxy.where属性中;
如果有group by关键字,同时有having关键字,则group by与having之间的是group by子句,如果有order by关键字则having与order by之间是having子句,如果没有order by关键字则从having到结尾的是having子句;如果没有having关键字,如果有order by关键字则group by与order by之间的是group by子句,如果没有order by关键字则从group by到结尾的是groupby子句;将group by子句和having子句分别存储到SqlProxy.groupBy和SqlProxy.having属性中;
如果有order by关键字,则将该关键字后的字符存储到SqlProxy.orderBy属性中。
3.根据权利要求1所述的查询语句解析与再处理的方法,其特征在于,如果用户传递参数时传递了变量page与size,则将对该查询提供分页查询的功能,使其只查询变量page对应页所需的数据,其中,在第一次查询时计算出页数与行数的总数据量,并与变量page和size一起计算出“第n页/共m页”和“第x条/共y条”信息,其中变量page为第几页,变量size为每页多少行,n、m、x、y均为自然数。
4.根据权利要求1所述的查询语句解析与再处理的方法,其特征在于,如果用户传递参数时传递了变量ordering,则对原查询拆分后的order by子句进行替换更新,将更新后的各个子句重新进行拼装,形成新的查询语句,执行排序查询。
5.根据权利要求1所述的查询语句解析与再处理的方法,其特征在于,如果用户传递参数时传递了变量groupBy、having,则对原查询拆分后的groupby子句进行替换更新,将更新后的各个子句重新进行拼装,形成新的查询语句,执行分组查询。
6.一种查询语句解析与再处理的装置,其特征在于,包括:
解析模块,首先定义一个类,所述类包含6项属性,分别对应标准查询语句的6个查询子句;
根据用户提供的原始查询语句和查询参数集,将所述原始查询语句的主查询语句解析为6个查询子句,包括select、from、where、group by、having、order by,并用查询对象对应的6个属性分别将得到的查询子句进行存储,其中所述原查询语句包含至少一个查询子句,对于所述原查询语句不包含的查询子句,所述类对应的属性为空;
处理模块,在查询对象中,分别对解析后的查询子句进行分页、分组、排序至少一项的处理,根据所述处理后,重新拼装进而形成新的查询语句及其查询参数,执行查询操作。
7.根据权利要求6所述的查询语句解析与再处理的装置,其特征在于,所述标准查询语句的6个查询子句分别为select、from、where、group by、having、order by,对应于所述类中的6项属性分别为SqlProxy.select、SqlProxy.from、SqlProxy.where、SqlProxy.groupBy、SqlProxy.having、SqlProxy.orderBy,对所述原查询语句的解析过程如下:
找出没有包含在任何括号中的以下关键字:select、from、where、group by、having、order by;
将在select与from之间的select子句存储在SqlProxy.select属性中;
from子句位于from与where之间,在检查时如果没有where关键字则检查group by关键字,如果也没有则检查order by关键字,如果还没有则从from关键字一直检查至字符串结束,将from子句存储在SqlProxy.from属性中;
如果有where关键字,在where与group by之间的是where子句,如果没有group by关键字则在where与order by之间,否则一直包含到字符串结束,将where子句存储在SqlProxy.where属性中;
如果有group by关键字,同时有having关键字,则group by与having之间的是group by子句,如果有order by关键字则having与order by之间是having子句,如果没有order by关键字则从having到结尾的是having子句;如果没有having关键字,如果有order by关键字则group by与order by之间的是group by子句,如果没有order by关键字则从group by到结尾的是groupby子句;将group by子句和having子句分别存储到SqlProxy.groupBy和SqlProxy.having属性中;
如果有order by关键字,则将该关键字后的字符存储到SqlProxy.orderBy属性中。
8.根据权利要求6所述的查询语句解析与再处理的装置,其特征在于,如果用户传递参数时传递了变量page与size,则将对该查询提供分页查询的功能,使其只查询变量page对应页所需的数据,其中,在第一次查询时计算出页数与行数的总数据量,并与变量page和size一起计算出“第n页/共m页”和“第x条/共y条”信息,其中变量page为第几页,变量size为每页多少行,n、m、x、y均为自然数。
9.根据权利要求6所述的查询语句解析与再处理的装置,其特征在于,如果用户传递参数时传递了变量ordering,则对原查询拆分后的order by子句进行替换更新,将更新后的各个子句重新进行拼装,形成新的查询语句,执行排序查询。
10.根据权利要求6所述的查询语句解析与再处理的装置,其特征在于,如果用户传递参数时传递了变量groupBy、having,则对原查询拆分后的groupby子句进行替换更新,将更新后的各个子句重新进行拼装,形成新的查询语句,执行分组查询。
CN201310692598.0A 2013-12-17 2013-12-17 一种查询语句解析与再处理的方法和装置 Pending CN104714974A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310692598.0A CN104714974A (zh) 2013-12-17 2013-12-17 一种查询语句解析与再处理的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310692598.0A CN104714974A (zh) 2013-12-17 2013-12-17 一种查询语句解析与再处理的方法和装置

Publications (1)

Publication Number Publication Date
CN104714974A true CN104714974A (zh) 2015-06-17

Family

ID=53414317

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310692598.0A Pending CN104714974A (zh) 2013-12-17 2013-12-17 一种查询语句解析与再处理的方法和装置

Country Status (1)

Country Link
CN (1) CN104714974A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106610973A (zh) * 2015-10-21 2017-05-03 北京国双科技有限公司 电视数据查询方法及装置
CN108628975A (zh) * 2018-04-25 2018-10-09 上海达梦数据库有限公司 一种数据库sql语句优化方法及装置
CN109213811A (zh) * 2017-06-30 2019-01-15 北京神州泰岳软件股份有限公司 一种报表展现方法和装置
CN109213776A (zh) * 2017-06-30 2019-01-15 北京神州泰岳软件股份有限公司 一种报表展现方法和装置
CN110019380A (zh) * 2018-11-02 2019-07-16 上海达梦数据库有限公司 一种数据查询方法、装置、服务器及存储介质
CN110019433A (zh) * 2018-01-02 2019-07-16 北京神州泰岳软件股份有限公司 一种报表查询方法和装置
CN110019335A (zh) * 2017-10-17 2019-07-16 航天信息股份有限公司 一种基于注解对sql查询语句进行动态扩展的方法及系统
CN110362591A (zh) * 2018-04-02 2019-10-22 北京神州泰岳软件股份有限公司 一种报表展现方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5826077A (en) * 1990-04-30 1998-10-20 Texas Instruments Incorporated Apparatus and method for adding an associative query capability to a programming language
US5890150A (en) * 1997-01-24 1999-03-30 Hitachi, Ltd. Random sampling method for use in a database processing system and a database processing system based thereon
CN101609473A (zh) * 2009-07-30 2009-12-23 金蝶软件(中国)有限公司 一种重构报表查询的结构化查询语言的方法及装置
CN101788992A (zh) * 2009-05-06 2010-07-28 厦门东南融通系统工程有限公司 一种数据库查询语句的转换方法和转换系统
CN102682118A (zh) * 2012-05-15 2012-09-19 北京久其软件股份有限公司 一种多维数据模型访问方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5826077A (en) * 1990-04-30 1998-10-20 Texas Instruments Incorporated Apparatus and method for adding an associative query capability to a programming language
US5890150A (en) * 1997-01-24 1999-03-30 Hitachi, Ltd. Random sampling method for use in a database processing system and a database processing system based thereon
CN101788992A (zh) * 2009-05-06 2010-07-28 厦门东南融通系统工程有限公司 一种数据库查询语句的转换方法和转换系统
CN101609473A (zh) * 2009-07-30 2009-12-23 金蝶软件(中国)有限公司 一种重构报表查询的结构化查询语言的方法及装置
CN102682118A (zh) * 2012-05-15 2012-09-19 北京久其软件股份有限公司 一种多维数据模型访问方法及装置

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106610973A (zh) * 2015-10-21 2017-05-03 北京国双科技有限公司 电视数据查询方法及装置
CN109213811B (zh) * 2017-06-30 2021-05-11 北京神州泰岳软件股份有限公司 一种报表展现方法和装置
CN109213811A (zh) * 2017-06-30 2019-01-15 北京神州泰岳软件股份有限公司 一种报表展现方法和装置
CN109213776A (zh) * 2017-06-30 2019-01-15 北京神州泰岳软件股份有限公司 一种报表展现方法和装置
CN109213776B (zh) * 2017-06-30 2021-08-06 北京神州泰岳软件股份有限公司 一种报表展现方法和装置
CN110019335A (zh) * 2017-10-17 2019-07-16 航天信息股份有限公司 一种基于注解对sql查询语句进行动态扩展的方法及系统
CN110019335B (zh) * 2017-10-17 2021-05-28 航天信息股份有限公司 一种基于注解对sql查询语句进行动态扩展的方法及系统
CN110019433A (zh) * 2018-01-02 2019-07-16 北京神州泰岳软件股份有限公司 一种报表查询方法和装置
CN110019433B (zh) * 2018-01-02 2021-11-19 北京神州泰岳软件股份有限公司 一种报表查询方法和装置
CN110362591A (zh) * 2018-04-02 2019-10-22 北京神州泰岳软件股份有限公司 一种报表展现方法和装置
CN110362591B (zh) * 2018-04-02 2022-02-22 北京神州泰岳软件股份有限公司 一种报表展现方法和装置
CN108628975A (zh) * 2018-04-25 2018-10-09 上海达梦数据库有限公司 一种数据库sql语句优化方法及装置
CN110019380A (zh) * 2018-11-02 2019-07-16 上海达梦数据库有限公司 一种数据查询方法、装置、服务器及存储介质
CN110019380B (zh) * 2018-11-02 2021-05-04 上海达梦数据库有限公司 一种数据查询方法、装置、服务器及存储介质

Similar Documents

Publication Publication Date Title
Wang et al. Schema management for document stores
CN104714974A (zh) 一种查询语句解析与再处理的方法和装置
CN101876983B (zh) 数据库分区方法与系统
EP1639503B1 (en) A data processing method and system
US20170083573A1 (en) Multi-query optimization
US8924373B2 (en) Query plans with parameter markers in place of object identifiers
CN107451225B (zh) 用于半结构化数据的可缩放分析平台
US8655861B2 (en) Query metadata engine
US9495427B2 (en) Processing of data using a database system in communication with a data processing framework
US11354284B2 (en) System and method for migration of a legacy datastore
CN102541529B (zh) 一种查询页面生成装置和方法
CN102929878B (zh) 一种数据库变更管理方法及装置
CN110633292A (zh) 一种异构数据库的查询方法、装置、介质、设备及系统
CN102567329B (zh) 一种数据查询方法及系统
CN111767303A (zh) 一种数据查询方法、装置、服务器及可读存储介质
CN103678494A (zh) 客户端同步服务端数据的方法及装置
CN102982075A (zh) 支持访问异构数据源的系统和方法
CN103778133A (zh) 一种数据库对象的变更方法及装置
CN106066895A (zh) 一种智能查询系统
US20100235344A1 (en) Mechanism for utilizing partitioning pruning techniques for xml indexes
CN104346331A (zh) Xml数据库的检索方法及系统
US20180357278A1 (en) Processing aggregate queries in a graph database
US9053207B2 (en) Adaptive query expression builder for an on-demand data service
US20190340272A1 (en) Systems and related methods for updating attributes of nodes and links in a hierarchical data structure
CN115617773A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20150617