CN114356968A - 查询语句生成方法、装置、计算机设备及存储介质 - Google Patents
查询语句生成方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN114356968A CN114356968A CN202111575613.4A CN202111575613A CN114356968A CN 114356968 A CN114356968 A CN 114356968A CN 202111575613 A CN202111575613 A CN 202111575613A CN 114356968 A CN114356968 A CN 114356968A
- Authority
- CN
- China
- Prior art keywords
- target
- query statement
- function
- database engine
- query
- 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
Links
Images
Abstract
本说明书实施方式提供一种查询语句生成方法、装置、计算机设备、存储介质及计算机程序产品。该方法通过获取初始查询语句,并调用查询语句解析服务对所述初始查询语句进行解析,并基于解析结果确定不适配于目标数据库引擎的目标关键词;进一步地,获取适配于所述目标数据库引擎的目标表述;利用所述目标表述替换所述初始查询语句中的所述目标关键词,得到适配于所述目标数据库引擎的目标查询语句,无论初始查询语句适应用于何种数据库引擎,可以调用查询语句解析服务对初始查询语句进行解析,从而实现以相同的初始查询语句可以在不同的数据库中进行查询,无需开发人员学习目标数据库的编写语言,降低开发人员的学习成本。
Description
技术领域
本说明书实施方式涉及计算机技术领域,具体涉及一种查询语句生成方法、装置、计算机设备、存储介质及计算机程序产品。
背景技术
在软件工程中,数据库通常被用于有效且快速地存储、读取和写入大量数据。数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可以控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求,包括创建用于存储数据的表和用于查看、管理和保护数据安全的数据库对象(如索引、视图和存储过程)。
在不同的关系数据库管理系统(比如Oracle、MySQL)中,各关系数据库管理系统具有不同的数据库引擎。若想利用各数据库引擎进行查询,需要开发人员针对不同的关系数据库管理系统进行编程学习,从而增加了学习成本。
发明内容
有鉴于此,本说明书实施方式致力于提供一种查询语句生成方法、装置、计算机设备、存储介质及计算机程序产品,以解决传统技术中跨数据库查询增加用户学习成本的技术问题。
本说明书实施方式提供了一种查询语句生成方法,所述方法包括:获取初始查询语句;对所述初始查询语句进行解析,得到所述初始查询语句的多个关键词;在所述多个关键词中确定不适配于目标数据库引擎的目标关键词;获取适配于所述目标数据库引擎的目标表述;利用所述目标表述替换所述初始查询语句中的所述目标关键词,得到适配于所述目标数据库引擎的目标查询语句。
本说明书实施方式提供一种查询语句生成装置,所述装置包括:初始语句获取模块,用于获取初始查询语句;初始语句解析模块,用于对所述初始查询语句进行解析,得到所述初始查询语句的多个关键词;目标关键词确定模块,用于在所述多个关键词中确定不适配于目标数据库引擎的目标关键词;目标表述获取模块,用于获取适配于所述目标数据库引擎的目标表述;目标语句生成模块,用于利用所述目标表述替换所述初始查询语句中的所述目标关键词,得到适配于所述目标数据库引擎的目标查询语句。
本说明书实施方式提供一种计算设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述实施方式中的方法步骤。
本说明书实施方式提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述实施方式中的方法步骤。
本说明书实施方式提供一种计算机程序产品,所述计算机程序产品中包括指令,所述指令被计算机设备的处理器执行时,使得所述计算机设备能够执行上述实施方式中的方法步骤。
本说明书实施方式,通过获取初始查询语句,并调用查询语句解析服务对所述初始查询语句进行解析,并基于解析结果确定不适配于目标数据库引擎的目标关键词;进一步地,获取适配于所述目标数据库引擎的目标表述;利用所述目标表述替换所述初始查询语句中的所述目标关键词,得到适配于所述目标数据库引擎的目标查询语句,无论初始查询语句适应用于何种数据库引擎,可以调用查询语句解析服务对初始查询语句进行解析,从而实现以相同的初始查询语句可以在不同的数据库中进行查询,无需开发人员学习目标数据库的编写语言,降低开发人员的学习成本。
附图说明
图1所示为一实施方式提供的查询语句生成方法的应用环境图;
图2所示为一实施方式提供的查询语句生成方法的流程示意图;
图3所示为一实施方式提供的查询语句生成方法的流程示意图;
图4所示为一实施方式提供的查询语句生成方法的流程示意图;
图5为一实施方式提供的查询语句生成装置的结构框图;
图6为一实施方式提供的计算机设备的内部结构图。
具体实施方式
下面将结合本说明书实施方式中的附图,对本说明书实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅是本说明书一部分实施方式,而不是全部的实施方式。基于本说明书中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本说明书保护的范围。
请参阅图1,本说明书实施方式提供一种数据查询系统,且本说明书提供的查询语句生成方法应用于该数据查询系统。该数据查询系统可以包括由终端110和服务器120形成的硬件环境。终端110通过网络与服务器120进行通信。服务器120获取初始查询语句;对初始查询语句进行解析,得到初始查询语句的多个关键词;在多个关键词中确定不适配于目标数据库引擎的目标关键词;获取适配于目标数据库引擎的目标表述;利用目标表述替换初始查询语句中的目标关键词,得到适配于目标数据库引擎的目标查询语句。
其中,终端110可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。随着科学技术的发展,可能会出现一些新型计算设备,比如量子计算服务器,这些新型计算设备也可以应用于本说明书的实施方式中。
请参阅图2,本说明书实施方式提供一种查询语句生成方法。该查询语句生成方法包括以下步骤。
S210、获取初始查询语句。
其中,数据库可以理解为是按照数据结构来组织、存储和管理数据的仓库。数据库可以是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。在一些实施方式中,根据业务方需求从数据库中获取查询数据前,因此需要用户编写查询语句,即为初始查询语句。初始查询语句可以是用户在查询语句编辑界面上编写的数据检索语句,比如可以是SQL(结构化查询语言,Structured Query Language)语句。具体地,终端提供有查询语句编辑界面,查询语句编辑界面中具有查询语句输入控件,通过查询语句输入控件响应于对初始查询语句的输入操作,终端接收到初始查询语句。在一些实施方式中,响应于对初始查询语句的输入操作,终端向服务器发送查询请求,查询请求中携带有初始查询语句,即服务器接收到初始查询语句。
S220、对初始查询语句进行解析,得到初始查询语句的多个关键词。
其中,初始查询语句中包括若干个关键词,关键词可以是初始查询语句中的搜索词(比如SQL语句中的SELECT、FROM),关键词可以是初始查询语句中的条件关键词(比如SQL语句中的WHERE、AS)。关键词可以是初始查询语句中的搜索依赖字段(比如SQL语句中的列名称)和搜索表名称(比如SQL语句中的表名称TABLE)。
随着业务数据量的增多,结合不同业务方的需求,业务数据可以被存储至不同种类的数据库中,比如MySQL数据库或者Oracle数据库。不同种类的数据库具有不同的数据库引擎。不同的数据库引擎支持的函数并不相同,示例性地,MySQL数据库的数据库引擎支持if函数,而Oracle数据库的数据库引擎并不支持。这就不仅会导致开发人员在编写查询语句时顾虑数据库引擎,影响开发效率,而且需要开发人员学习了解不同数据库引擎,增加了开发人员的学习成本。基于此,本说明书实施方式提供查询语句解析服务,在将初始查询语句提交至数据库引擎之前,将初始查询语句提交至查询语句解析服务进行解析,通过查询语句解析服务对初始查询语句进行解析,以确定初始查询语句是否适配于目标数据库引擎。
具体地,提交初始查询语句至查询语句解析服务,通过查询语句解析服务对初始查询语句进行解析,提取出对初始查询语句中的关键词字。在一些实施方式中,可以通过查询语句解析服务对初始查询语句进行语法分析,基于预设设置的初始查询语句的语法规则对初始查询语句进行分析,得到语法分析结果,从去中提取出来初始查询语句的多个关键词。
S230、在多个关键词中确定不适配于目标数据库引擎的目标关键词。
其中,目标数据库引擎可以是目标数据库的执行引擎。执行引擎可以是用于存储、处理和保护数据的核心服务。目标数据库可以是存储有业务数据在执行查询任务时的查询对象,以通过初始查询语句从目标数据库中获取对应的查询数据。目标关键词可以是初始查询语句中并不能被目标数据库引擎处理的关键词。目标关键词可以是函数关键词,如前文的MySQL数据库支持但Oracle数据库不支持的if函数。目标关键词可以是不满足目标数据库要求格式的关键词,比如目标数据库要求查询语句中的关键词需要采用大写形式,则若初始查询语句中的任一关键词包括小写字母,则该任一关键词被确定为目标关键词。
具体地,数据库包括数据库引擎,且不同的数据库包括不同的数据库引擎,不同的数据库引擎所能识别的关键词也可能不同。初始查询语句中可能会存在一些目标数据库引擎不能识别的目标关键词,可以理解为,若提交初始查询语句至目标数据库引擎,目标数据库引擎并不能执行初始查询语句对应的查询任务。因此,在初始查询语句中的多个关键词中确定不适配于目标数据库引擎的目标关键词。
在一些实施方式中,虽然不同的数据库包括不同的数据库引擎,但不同的数据库引擎之间也有共同性,可以基于各数据引擎所能识别的关键词类别,预先配置目标关键词的种类。进一步地,基于预先配置的目标关键词的种类在多个关键词中确定不适配于目标数据库引擎的目标关键词。
S240、获取适配于目标数据库引擎的目标表述。
S250、利用目标表述替换初始查询语句中的目标关键词,得到适配于目标数据库引擎的目标查询语句。
其中,目标表述可以是目标查询语句中关键词,且包括目标表述的查询语句是可以被目标数据库引擎执行的。目标表述可以与初始查询语句中的目标关键词的功能相容,且指向目标数据库中同一数据列。但是初始查询语句中的目标关键词不能被目标数据库的目标数据库引擎所识别,或者说目标关键词与目标数据库的目标数据库引擎不适配,而目标表述可以被目标数据库的目标数据库引擎所识别,即与目标数据库的目标数据库引擎适配。目标查询语句是可以被目标数据库所执行的查询任务的依赖语句。
具体地,需要对初始查询语句中的目标关键词进行替换处理,得到适配于目标数据库引擎的目标查询语句,以使目标数据库引擎可以执行查询任务,从而可以向用户提供满足业务需求的查询数据。在一些实施方式中,可以预先配置有一些对目标关键词的处理方式,根据目标关键词的属性信息确定目标关键词的处理方式。预先配置的对目标关键词的处理方式可以是小写转换为大写,也可以是对目标关键词的处理函数,将目标关键词转换为目标表述。
基于目标关键词的处理方式对目标关键词进行处理,得到适配于目标数据库引擎的目标表述。进一步地,利用目标表述替换初始查询语句中的目标关键词,得到目标查询语句。目标查询语句适配于目标数据库引擎,目标查询语句可以被目标数据库引擎执行。
上述查询语句生成方法,通过获取初始查询语句,并调用查询语句解析服务对初始查询语句进行解析,并基于解析结果确定不适配于目标数据库引擎的目标关键词;进一步地,获取适配于目标数据库引擎的目标表述;利用目标表述替换初始查询语句中的目标关键词,得到适配于目标数据库引擎的目标查询语句,无论初始查询语句适应用于何种数据库引擎,可以调用查询语句解析服务对初始查询语句进行解析,从而实现以相同的初始查询语句可以在不同的数据库中进行查询,无需开发人员学习目标数据库的编写语言,降低开发人员的学习成本。进一步地,在开发人员调用目标数据库进行数据查询时,也无需考虑数据库引擎的种类,而且将一些数据处理过程在查询语句解析服务中执行,而不是在数据库引擎中执行,减少数据库引擎的运行压力,提升查询效率。
在一些实施方式中,目标关键词包括函数关键词。其中,函数关键词所表达的自定义函数不能够被目标数据库引擎解析。
具体地,函数关键词可以是初始查询语句中包含的用于表达自定义函数的关键词。函数关键词可以是函数名称,比如加法函数(incr函数)、加密函数(encode函数)、取整函数(int函数)、四舍五入函数(round函数)等中的至少一个。函数关键词可以是函数式,不仅包括函数名称还包括自变量;如前所示,函数名称可以是加法函数(incr函数)、加密函数(encode函数)、取整函数(int函数)、四舍五入函数(round函数)中的任一个,自变量可以采用目标数据库中的数据列名称。其中,自定义函数不能够在数据库引擎中执行,可以在查询语句解析服务中执行。自定义函数的执行时机可以数据库引擎执行查询事件之前,也可以在数据库引擎执行查询事件之后。
本实施方式中,将初始查询语句中的自定义函数的执行分配至查询语句解析服务,而不是目标数据库引擎,提升自定义函数在不同数据库件使用的扩展性,打破特定数据库的自定义函数只能在特定数据库的数据库引擎中运行的局限性,而且通过控制自定义函数的执行时机,将自定义函数的执行与查询事件的执行分离开来,减少目标数据库引擎的运行压力,提升查询效率。
在一些实施方式中,请参阅图3,自定义函数包括事前函数。事前函数为预设的在目标数据库引擎执行目标查询语句前被执行的自定义函数。获取适配于目标数据库引擎的目标表述,可以包括以下步骤。
S310、执行事前函数,得到事前函数的执行结果。
S320、将事前函数的执行结果作为目标表述。
相应地,利用目标表述替换初始查询语句中的目标关键词,包括以下步骤。
S330、利用事前函数的执行结果替换初始查询语句中的函数关键词。
其中,在设置自定义函数时,会根据自定义函数的执行时机设置自定义函数的类型。若自定义函数在目标数据库引擎执行目标查询语句前被执行,则可以定义为事前函数。示例性地,在定义自定义函数时,可以设置定义的自定义函数为事前函数。
具体地,调用查询语句解析服务对初始查询语句进行解析,得到初始查询语句的多个关键词。由于在多个关键词中确定不适配于目标数据库引擎的目标关键词,需要对目标关键词进行替换处理,以得到适配于目标数据库引擎的目标表述。在一些实施方式中,初始查询语句中包括自定义函数,可以进一步地确定自定义函数是否事前函数,若为事前函数,且已经预设了事前函数的执行时机为在目标数据库引擎执行目标查询语句之前。因此,在提交查询语句至目标数据引擎之前,执行事前函数,得到事前函数的执行结果,将事前函数的执行结果作为目标标识。
示例性地,初始查询语句可以为select@incr(age,5)as年龄from user_info。其中,@incr(age,5)为在查询语句解析服务中执行的事前函数。user_info为用户信息表(table)。age为用户信息表user_info中的一个数据列。“年龄”为展示查询数据时数据列age内的数据对应的表头。具体地,获取初始查询语句select@incr(age,5)as年龄fromuser_info,从初始查询语句中提取到的关键词分别为:“select”、“@incr(age,5)”、“as”、“年龄”、“from”、“user_info”。在这些关键词中确定函数关键词@incr(age,5)。由于预先在定义了@incr()为事前函数,因此,执行@incr(age,5),得到的执行结果为age+5。利用age+5替换初始查询语句中的“@incr(age,5)”,则得到select age+5as年龄from user_info。
本实施方式中,通过设置不在数据库引擎执行的事前函数,解决传统技术中自定义函数对数据库引擎的依赖,并可以灵活设置自定义函数的执行时机。
在一些实施方式中,请参阅图4,自定义函数包括事后函数;事后函数为预设的在目标数据库引擎执行目标查询语句后被执行的自定义函数;获取适配于目标数据库引擎的目标表述,包括:
S410、从事后函数中提取查询依赖字段。
S420、将查询依赖字段作为目标表述。
相应地,利用目标表述替换初始查询语句中的目标关键词,可以包括以下步骤。
S430、利用查询依赖字段替换初始查询语句中的函数关键词。
其中,在设置自定义函数时,会根据自定义函数的执行时机设置自定义函数的类型。若自定义函数在目标数据库引擎执行目标查询语句后被执行,则可以定义为事后函数。示例性地,在定义自定义函数时,可以设置定义的自定义函数为事后函数。
具体地,调用查询语句解析服务对初始查询语句进行解析,得到初始查询语句的多个关键词。由于在多个关键词中确定不适配于目标数据库引擎的目标关键词,需要对目标关键词进行替换处理,以得到适配于目标数据库引擎的目标表述。在一些实施方式中,初始查询语句中包括自定义函数,可以进一步地确定自定义函数是否事后函数,若为事后函数,且已经预设了事后函数的执行时机为在目标数据库引擎执行目标查询语句之后。但是事后函数也是不能被目标数据引擎所运行的,因此,在提交查询语句至目标数据引擎之前,还需要对事后函数进行替换处理。在一些实施方式中,事后函数包括函数名称和函数自变量。函数自变量可以是目标数据库中的数据列,因此从事后函数中提取函数自变量,将函数自变量作为查询依赖字段,并将查询依赖字段作为目标表述。进一步地,利用查询依赖字段替换初始查询语句中的函数关键词。需要说明的是,在目标数据库引擎执行完成查询任务后,事后函数需要对执行查询任务得到的初步查询数据进行处理,得到查询数据。
示例性地,初始查询语句可以为select@encode(mobile,3,3,’*’)as手机号fromuser_info。其中,@encode(mobile,3,3,’*’)为在查询语句解析服务中执行的事后函数。user_info为用户信息表(table)。mobile为用户信息表user_info中的一个数据列。“手机号”为展示数据列mobile内的数据被事后函数处理后得到的数据对应的表头。具体地,获取初始查询语句select@encode(mobile,3,3,’*’)as手机号from user_info,从初始查询语句中提取到的关键词分别为:“select”、“@encode(mobile,3,3,’*’)”、“as”、“手机号”、“from”、“user_info”。在这些关键词中确定函数关键词@encode(mobile,3,3,’*’)。由于预先在定义了@encode()为事后函数,但是@encode(mobile,3,3,’*’)不能够被目标数据库引擎执行,因此,从@encode(mobile,3,3,’*’)提取数据列“mobile”。利用mobile替换初始查询语句中的“@encode(mobile,3,3,’*’)”,则得到select mobile as手机号from user_info。
本实施方式中,通过设置不在数据库引擎执行的事后函数,解决传统技术中自定义函数对数据库引擎的依赖,并可以灵活设置自定义函数的执行时机。
在一些实施方式中,该查询语句生成方法还可以包括:提交目标查询语句至目标数据库引擎。其中,目标数据库引擎用于执行目标查询语句,得到对应的查询数据。
其中,查询数据可以理解为满足业务方需求的数据。在一些实施方式中,查询数据可以是直接从数据库中获取的数据,查询数据也可以是对从数据库中获取的初始数据进行加密处理、格式调整等处理后的数据。具体地,在目标数据库引擎中添加了查询语句解析服务,在查询语句解析服务对初始查询语句解析和对目标关键词替换处理之后,得到目标查询语句,将目标查询语句提交至目标数据库引擎。目标数据库引擎执行目标查询语句,得到对应的查询数据。
本实施方式中,基于初始查询语句得到适配于目标数据库引擎的目标查询语句,降低查询语句对数据库引擎的依赖,降低开发人员的学习成本。
在一些实施方式中,在提交目标查询语句至目标数据库引擎之前,该查询语句生成方法还可以包括:获取能够指向目标数据库引擎的标识信息;根据标识信息确定目标数据库引擎。
其中,标识信息可以租户ID,也可以是用户ID。在一些实施方式中,不同租户对应有各自独立的数据库,可以预先配置好租户ID与其需要访问的数据库之间的对应的关系。具体地,可以设置数据库适配模块,数据库适配模块中包括标识信息与数据库之间的对应关系。接收到查询请求时,查询请求附带有标识信息,根据标识信息在标识信息与数据库之间的对应关系,确定目标数据库,从而确定查询请求对应的查询数据存储在与标识信息对应的目标数据库中。根据标识信息可以确定目标数据库,目标数据库所使用的目标数据库引擎也随之确定。进一步地,可以目标查询语句至目标数据库引擎。
本实施方式中,通过获取能够指向目标数据库引擎的标识信息,并根据标识信息确定目标数据库引擎,可以灵活地确定用于查询的目标数据库以及目标数据库引擎,提升查询的灵活性,满足不同用户的需求。
在一些实施方式中,该查询语句生成方法还可以包括:接收目标数据库引擎返回的查询数据;在函数关键词表明存在事后函数的情况下,利用事后函数对查询数据进行运算,得到对应的运算结果。
其中,事后函数为预设的在目标数据库引擎执行目标查询语句后被执行的自定义函数。在一些实施方式中,在设置自定义函数时,会根据自定义函数的执行时机设置自定义函数的类型。若自定义函数在目标数据库引擎执行目标查询语句后被执行,则可以定义为事后函数。示例性地,在定义自定义函数时,可以设置定义的自定义函数为事后函数。
具体地,基于初始查询语句得到目标查询语句,将目标查询语句提交至目标数据库引擎。目标数据库引擎执行目标查询语句,得到对应的查询数据。由于目标查询语句中关键词可能是对初始查询语句中的事后函数关键词进行替换得到的,且事后函数的执行时机为在目标数据库引擎执行目标查询语句后。因此,执行目标查询语句,得到对应的查询数据可能并不是用户需要的最终查询数据。因此,需要进一步地检测初始查询语句中是否存在事后函数。若存在事后函数,则利用事后函数对查询数据进行运算,得到对应的运算结果,将运算结果作为最终查询结果并返回。若不存在事后函数,则将查询数据作为最终查询结果并返回。
本实施方式中,在基于目标查询语句之后进一步地基于事后函数对查询数据进行处理,确保返回的查询结果的准确性,以及将事后函数的执行设置在目标数据库引擎之外,减少目标数据库引擎的运行压力,提升查询效率。
本说明书实施方式提供一种查询语句生成方法,该查询语句生成方法可以包括以下步骤。
S502、获取初始查询语句。
S504、对初始查询语句进行解析,得到初始查询语句的多个关键词。
S506、在多个关键词中确定不适配于目标数据库引擎的目标关键词。
其中,目标关键词包括函数关键词;其中,函数关键词所表达的自定义函数不能够被目标数据库引擎解析。自定义函数包括事前函数和事后函数;事前函数为预设的在目标数据库引擎执行目标查询语句前被执行的自定义函数。事后函数为预设的在目标数据库引擎执行目标查询语句后被执行的自定义函数。
S508、执行事前函数,得到事前函数的执行结果;将事前函数的执行结果作为目标表述。
S510、利用事前函数的执行结果替换初始查询语句中的函数关键词。
S512、从事后函数中提取查询依赖字段;将查询依赖字段作为目标表述。
S514、利用查询依赖字段替换初始查询语句中的函数关键词。
S516、在事前函数的执行结果和查询依赖字段替换后,得到适配于目标数据库引擎的目标查询语句。
S518、获取能够指向目标数据库引擎的标识信息。
S520、根据标识信息确定目标数据库引擎。
S522、提交目标查询语句至目标数据库引擎;其中,目标数据库引擎用于执行目标查询语句,得到对应的查询数据。
S524、接收目标数据库引擎返回的查询数据。
S526、在函数关键词表明存在事后函数的情况下,利用事后函数对查询数据进行运算,得到对应的运算结果。
其中,事后函数为预设的在目标数据库引擎执行目标查询语句后被执行的自定义函数。
在一些实施方式中,终端提供有查询语句编辑界面,通过查询语句编辑界面获取用户输入的初始查询语句。示例性地,初始查询语句可以为select@encode(mobile,3,3,’*’)as手机号,@incr(age,5)as年龄from user_info。提交初始查询语句至查询语句解析服务,通过查询语句解析服务提取初始查询语句的关键词。提取到的关键词包括“Select”“@encode(mobile,3,3,’*’)”、“as”、“手机号”、“@incr(age,5)”、“As”、“年龄”、“From”、“user_info”。其中,@incr(age,5)为在查询语句解析服务中执行的事前函数。user_info为用户信息表(table)。age为用户信息表user_info中的一个数据列。“年龄”为展示查询数据时数据列age内的数据对应的表头。@encode(mobile,3,3,’*’)为在查询语句解析服务中执行的事后函数。mobile为用户信息表user_info中的一个数据列。“手机号”为展示数据列mobile内的数据被事后函数处理后得到的数据对应的表头。
在关键词中确定自定义函数@incr(age,5)和@encode(mobile,3,3,’*’)。由于事先已经定义了@incr()和@encode()的函数类型,@incr()为事前函数,@encode()为事后函数。@incr()为前置函数,执行前置函数,得到age+5,并将“@incr(age,5)”替换为“age+5”。@encode()为后置函数,则不执行,从“@encode(mobile,3,3,’*’)”中提取“mobile”,将函数位“@encode(mobile,3,3,’*’)”替换为“mobile”。生成目标查询语句select mobileas手机号,age+5as年龄from user_info。提交目标查询语句目标数据库引擎。目标数据库引擎执行目标查询语句,得到对应的查询数据。判断存在事后函数@encode(),从查询数据中获取“mobile”对应的数据,利用@encode(mobile,3,3,’*’)对“mobile”对应的数据进行运算。Mobile的前三位和后三位采用明文,Mobile的其他中间位用星号(*)代替。
应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
请参阅图5,本说明书实施方式提供了一种查询语句生成装置500。查询语句生成装置500包括初始语句获取模块510、初始语句解析模块520、目标关键词确定模块530、目标表述获取模块540和目标语句生成模块550。
初始语句获取模块510,用于获取初始查询语句;
初始语句解析模块520,用于对初始查询语句进行解析,得到初始查询语句的多个关键词;
目标关键词确定模块530,用于在多个关键词中确定不适配于目标数据库引擎的目标关键词;
目标表述获取模块540,用于获取适配于目标数据库引擎的目标表述;
目标语句生成模块550,用于利用目标表述替换初始查询语句中的目标关键词,得到适配于目标数据库引擎的目标查询语句。
关于查询语句生成装置的具体限定可以参见上文中对于查询语句生成方法的限定,在此不再赘述。上述查询语句生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一些实施方式中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种查询语句生成方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本说明书所公开方案相关的部分结构的框图,并不构成对本说明书所公开方案所应用于其上的计算机设备的限定,具体地,计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一些实施方式中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述实施方式中的方法步骤。
在一些实施方式中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施方式中的方法步骤。
在一些实施方式中,还提供一种计算机程序产品,所述计算机程序产品中包括指令,上述指令可由计算机设备的处理器执行时实现上述实施方式中的方法步骤。
本领域普通技术人员可以理解实现上述实施方式方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施方式的流程。其中,本说明所提供的各实施方式中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施方式的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施方式中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述仅为本说明书的较佳实施方式而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所作的任何修改、等同替换等,均应包含在本说明书的保护范围之内。
Claims (11)
1.一种查询语句生成方法,其特征在于,所述方法包括:
获取初始查询语句;
对所述初始查询语句进行解析,得到所述初始查询语句的多个关键词;
在所述多个关键词中确定不适配于目标数据库引擎的目标关键词;
获取适配于所述目标数据库引擎的目标表述;
利用所述目标表述替换所述初始查询语句中的所述目标关键词,得到适配于所述目标数据库引擎的目标查询语句。
2.根据权利要求1所述的方法,其特征在于,所述目标关键词包括函数关键词;其中,所述函数关键词所表达的自定义函数不能够被所述目标数据库引擎解析。
3.根据权利要求2所述的方法,其特征在于,所述自定义函数包括事前函数;所述事前函数为预设的在所述目标数据库引擎执行所述目标查询语句前被执行的自定义函数;所述获取适配于所述目标数据库引擎的目标表述,包括:
执行所述事前函数,得到所述事前函数的执行结果;
将所述事前函数的执行结果作为所述目标表述;
相应地,所述利用所述目标表述替换所述初始查询语句中的所述目标关键词,包括:
利用所述事前函数的执行结果替换所述初始查询语句中的所述函数关键词。
4.根据权利要求2所述的方法,其特征在于,所述自定义函数包括事后函数;所述事后函数为预设的在所述目标数据库引擎执行所述目标查询语句后被执行的自定义函数;所述获取适配于所述目标数据库引擎的目标表述,包括:
从所述事后函数中提取查询依赖字段;
将所述查询依赖字段作为所述目标表述;
相应地,所述利用所述目标表述替换所述初始查询语句中的所述目标关键词,包括:
利用所述查询依赖字段替换所述初始查询语句中的所述函数关键词。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
提交所述目标查询语句至所述目标数据库引擎;其中,所述目标数据库引擎用于执行所述目标查询语句,得到对应的查询数据。
6.根据权利要求5所述的方法,其特征在于,在所述提交所述目标查询语句至所述目标数据库引擎之前,所述方法还包括:
获取能够指向所述目标数据库引擎的标识信息;
根据所述标识信息确定所述目标数据库引擎。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
接收所述目标数据库引擎返回的所述查询数据;
在所述函数关键词表明存在事后函数的情况下,利用所述事后函数对所述查询数据进行运算,得到对应的运算结果;其中,所述事后函数为预设的在所述目标数据库引擎执行所述目标查询语句后被执行的自定义函数。
8.一种查询语句生成装置,其特征在于,所述装置包括:
初始语句获取模块,用于获取初始查询语句;
初始语句解析模块,用于对所述初始查询语句进行解析,得到所述初始查询语句的多个关键词;
目标关键词确定模块,用于在所述多个关键词中确定不适配于目标数据库引擎的目标关键词;
目标表述获取模块,用于获取适配于所述目标数据库引擎的目标表述;
目标语句生成模块,用于利用所述目标表述替换所述初始查询语句中的所述目标关键词,得到适配于所述目标数据库引擎的目标查询语句。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
11.一种计算机程序产品,所述计算机程序产品中包括指令,其特征在于,所述指令被计算机设备的处理器执行时,使得所述计算机设备能够执行如权利要求1至7任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111575613.4A CN114356968A (zh) | 2021-12-21 | 2021-12-21 | 查询语句生成方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111575613.4A CN114356968A (zh) | 2021-12-21 | 2021-12-21 | 查询语句生成方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114356968A true CN114356968A (zh) | 2022-04-15 |
Family
ID=81102193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111575613.4A Pending CN114356968A (zh) | 2021-12-21 | 2021-12-21 | 查询语句生成方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114356968A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115563183A (zh) * | 2022-09-22 | 2023-01-03 | 北京百度网讯科技有限公司 | 查询方法、装置及程序产品 |
WO2024032820A1 (zh) * | 2022-08-09 | 2024-02-15 | 顺丰科技有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
-
2021
- 2021-12-21 CN CN202111575613.4A patent/CN114356968A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024032820A1 (zh) * | 2022-08-09 | 2024-02-15 | 顺丰科技有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
CN115563183A (zh) * | 2022-09-22 | 2023-01-03 | 北京百度网讯科技有限公司 | 查询方法、装置及程序产品 |
CN115563183B (zh) * | 2022-09-22 | 2024-04-09 | 北京百度网讯科技有限公司 | 查询方法、装置及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020057022A1 (zh) | 关联推荐方法、装置、计算机设备和存储介质 | |
US9767183B2 (en) | Method and system for enhanced query term suggestion | |
WO2019085474A1 (zh) | 计算引擎实现方法、电子装置及存储介质 | |
CN105431844A (zh) | 用于搜索系统的第三方搜索应用 | |
CN110795455A (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
CN114356968A (zh) | 查询语句生成方法、装置、计算机设备及存储介质 | |
CN109710220B (zh) | 关系型数据库查询方法、装置、设备及存储介质 | |
CN112651236B (zh) | 提取文本信息的方法、装置、计算机设备和存储介质 | |
WO2016200667A1 (en) | Identifying relationships using information extracted from documents | |
CN111078776A (zh) | 数据表的标准化方法、装置、设备及存储介质 | |
CN112286934A (zh) | 数据库表导入方法、装置、设备及介质 | |
CN112883030A (zh) | 数据收集方法、装置、计算机设备和存储介质 | |
CN111324716A (zh) | 指标数据获取方法、装置、计算机设备和存储介质 | |
CN113297458A (zh) | 一种分页查询方法、装置和设备 | |
CN114153995B (zh) | 医学术语的处理方法、装置、计算机设备和存储介质 | |
US9898467B1 (en) | System for data normalization | |
US11120064B2 (en) | Transliteration of data records for improved data matching | |
US11244000B2 (en) | Information processing apparatus and non-transitory computer readable medium storing program for creating index for document retrieval | |
CN111984659A (zh) | 数据更新方法、装置、计算机设备和存储介质 | |
US11580251B1 (en) | Query-based database redaction | |
CN113010550B (zh) | 结构化数据的批处理对象生成、批处理方法和装置 | |
CN114610955A (zh) | 一种智能检索方法、装置、电子设备及存储介质 | |
CN113821514A (zh) | 数据拆分方法、装置、电子设备和可读存储介质 | |
JP6870454B2 (ja) | 分析装置、分析プログラム及び分析方法 | |
CN113609128A (zh) | 生成数据库实体类的方法、装置、终端设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |