一种使用转换SQL语句查询数据的方法和装置制造方法及图纸

技术编号:38093792 阅读:13 留言:0更新日期:2023-07-06 09:07
一种使用转换SQL语句查询数据的方法和装置,该方法包括:获取包括查询过滤条件的基础SQL语句,并转换为SQL抽象语法树;遍历所述SQL抽象语法树,并判断是否满足预设条件;若满足预设条件,则按照预先定义的规则得到修改后的SQL抽象语法树,并将修改后的SQL抽象语法树输出为转换后的SQL语句;利用所述转换后的SQL语句在数据库查询满足查询过滤条件的数据。句在数据库查询满足查询过滤条件的数据。句在数据库查询满足查询过滤条件的数据。

【技术实现步骤摘要】
一种使用转换SQL语句查询数据的方法和装置


[0001]本申请涉及数据库领域,尤指一种使用转换SQL语句查询数据的方法和装置。

技术介绍

[0002]在WEB应用程序中,根据用户输入的多种查询条件进行动态查询数据库并返回数据是非常普遍的需求。
[0003]在Java Web后端开发领域mybatis技术框架下,对这个需求的普遍解决方案是采用动态SQL模板;但是若有更多更复杂的查询过滤条件需求,需要在SQL查询模板文件中逐个详细写出。
[0004]在Java WEB后端Hibernate技术框架下,通用的解决方案是HQL Criteria查询技术。HQL Criteria技术需要为将每个查询条件转换为Criteria语句,每个查询条件都需要手写一条或多条的Java语句。
[0005]上述两种通用的技术解决方案,都要需要手工维护SQL查询模板或Java Criteria语句,工作量大,细致繁琐易错且无法通用。

技术实现思路

[0006]本申请提供了一种使用转换SQL语句查询数据的方法和装置,可以根据基础SQL查询语句和动态可变的查询过滤条件进行修改,使用修改后的SQL语句在不同数据库中进行查询数据。
[0007]本申请提供了一种使用转换SQL语句查询数据的方法,方法包括:
[0008]获取包括查询过滤条件的基础SQL语句,并转换为SQL抽象语法树;
[0009]遍历所述SQL抽象语法树,并判断是否满足预设条件;
[0010]若满足预设条件,则按照预先定义的规则得到修改后的SQL抽象语法树,并将修改后的SQL抽象语法树输出为转换后的SQL语句;
[0011]利用所述转换后的SQL语句在数据库查询满足查询过滤条件的数据。
[0012]一种示例性的实施例中,所述获取包括查询过滤条件的基础SQL语句后,方法还包括:
[0013]根据所述查询过滤条件提取出SQL变量替换的四要素;
[0014]其中,所述四要素为SQL变量名、SQL变量数据类型、查询过滤操作和常量值。
[0015]一种示例性的实施例中,所述遍历所述SQL抽象语法树,并判断是否满足预设条件,包括:
[0016]遍历所述SQL抽象语法树;
[0017]判断所述SQL抽象语法树中的SQL变量名与所述查询过滤条件所对应的四要素元组的SQL变量名是否匹配;
[0018]若匹配,则确定满足预设条件。
[0019]一种示例性的实施例中,所述判断所述SQL抽象语法树中的SQL变量名与所述查询
过滤条件所对应的四要素中的SQL变量名是否匹配,包括:
[0020]将所述SQL抽象语法树中的SQL变量名与四要素元组的SQL变量名字符串进行比较;
[0021]若两个变量名的字符串相等,则确定两个变量名匹配。
[0022]一种示例性的实施例中,所述预先定义的规则,包括:
[0023]根据四要素元组的SQL变量数据类型,将SQL变量转换为四要素元组的SQL常量值所对应的SQL常量表达式。
[0024]一种示例性的实施例中,所述预先定义的规则,还包括:
[0025]如果SQL变量是SQL二元表达式中的一子表达式,则将SQL二元表达式的二元操作符修改为四要素元组中查询过滤操作所对应的二元操作符。
[0026]一种示例性的实施例中,所述将SQL二元表达式的二元操作符修改为四要素元组中查询过滤操作所对应的二元操作符,包括:
[0027]根据查询过滤操作的值,以及SQL二元操作符的映射关系表中的预设的对应关系,将所述四要素元组的查询过滤操作替换为二元操作符;其中,所述预设的对应关系包括不同的查询过滤操作的值所对应的二元操作符。
[0028]一种示例性的实施例中,所述SQL二元操作符的映射关系表中查询过滤操作的值与二元操作符一一对应。
[0029]为了解决上述问题,本专利技术还提供了一种使用转换SQL语句查询数据的装置,所述装置包括:存储器和处理器;其特征在于,所述存储器用于保存进行使用转换SQL语句查询数据的程序,所述处理器用于读取执行所述用于进行使用转换SQL语句查询数据的程序,执行上述实施例中任一项所述的方法。
[0030]为了解决上述问题,本专利技术还提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令被处理器执行时进行上述实施例中任一项所述的方法中的操作。
[0031]与相关技术相比,本申请提供一种使用转换SQL语句查询数据的方法和装置,该方法包括:获取包括查询过滤条件的基础SQL语句,并转换为SQL抽象语法树;遍历所述SQL抽象语法树,并判断是否满足预设条件;若满足预设条件,则按照预先定义的规则得到修改后的SQL抽象语法树,并将修改后的SQL抽象语法树输出为转换后的SQL语句;利用所述转换后的SQL语句在数据库查询满足查询过滤条件的数据。本申请可以根据基础SQL查询语句和动态可变的查询过滤条件进行修改,使用修改后的SQL语句在不同数据库中进行查询数据。
[0032]本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。
附图说明
[0033]附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
[0034]图1为本申请实施例的使用转换SQL语句查询数据的方法流程图;
[0035]图2为本申请实施例的使用转换SQL语句查询数据的装置示意图。
具体实施方式
[0036]本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
[0037]本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的专利技术方案。任何实施例的任何特征或元件也可以与来自其它专利技术方案的特征或元件组合,以形成另一个由权利要求限定的独特的专利技术方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
[0038]此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种使用转换SQL语句查询数据的方法,其特征在于,方法包括:获取包括查询过滤条件的基础SQL语句,并转换为SQL抽象语法树;遍历所述SQL抽象语法树,并判断是否满足预设条件;若满足预设条件,则按照预先定义的规则得到修改后的SQL抽象语法树,并将修改后的SQL抽象语法树输出为转换后的SQL语句;利用所述转换后的SQL语句在数据库查询满足查询过滤条件的数据。2.根据权利要求1所述的使用转换SQL语句查询数据的方法,其特征在于,所述获取包括查询过滤条件的基础SQL语句后,方法还包括:根据所述查询过滤条件提取出SQL变量替换的四要素;其中,所述四要素为SQL变量名、SQL变量数据类型、查询过滤操作和常量值。3.根据权利要求2所述的使用转换SQL语句查询数据的方法,其特征在于,所述遍历所述SQL抽象语法树,并判断是否满足预设条件,包括:遍历所述SQL抽象语法树;判断所述SQL抽象语法树中的SQL变量名与所述查询过滤条件所对应的四要素元组的SQL变量名是否匹配;若匹配,则确定满足预设条件。4.根据权利要求3所述的使用转换SQL语句查询数据的方法,其特征在于,所述判断所述SQL抽象语法树中的SQL变量名与所述查询过滤条件所对应的四要素元组的SQL变量名是否匹配,包括:将所述SQL抽象语法树中的SQL变量名与四要素元组的SQL变量名字符串进行比较;若两个变量名的字符串相等,则确定两个变量名匹配。5.根据权利要求3所述的使用转换SQL语句查询数据的方法,其特征在于,所述预先定义的规则,...

【专利技术属性】
技术研发人员:朱国峰
申请(专利权)人:北京兰云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1