一种表达式转换方法、装置、设备及存储介质制造方法及图纸

技术编号:20025670 阅读:42 留言:0更新日期:2019-01-06 04:32
本发明专利技术实施例公开了一种表达式转换方法、装置、设备及存储介质。该方法包括:获取表达式链表中的至少两个表达式;将至少两个表达式中相同的表达式转换为第一变量;于计算至少两个表达式时,若当前表达式为第一变量,则替换当前表达式为第一变量的对应值,通过本发明专利技术的技术方案,既避免了表达式的重复计算,又能够有效的提高性能。

【技术实现步骤摘要】
一种表达式转换方法、装置、设备及存储介质
本专利技术实施例涉及数据库技术,尤其涉及一种表达式转换方法、装置、设备及存储介质。
技术介绍
数据库管理系统,databasemanagementsystem,简称DBMS,是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。数据库管理系统DBMS中有多种表达式,多种表达式可以相互组合,组合后的表达式之间常常有重复的内容。在实际表达式计算时,由于表达式的重复出现,导致表达式的重复计算,降低了表达式计算的速度。
技术实现思路
本专利技术实施例提供一种表达式转换方法、装置、设备及存储介质,既避免了表达式的重复计算,又能够有效的提高性能。第一方面,本专利技术实施例提供了一种表达式转换方法,包括:获取表达式链表中的至少两个表达式;将所述至少两个表达式中相同的表达式转换为第一变量;于计算所述至少两个表达式时,若当前表达式为第一变量,则替换所述当前表达式为第一变量的对应值。进一步的,还包括:查找所述至少两个表达式中的常量表达式,并将所述常量表达式转换为第二变量。进一步的,查找所述至少两个表达式中的常量表达式,并将所述常量表达式转换为第二变量之前,还包括:建立关于表达式和变量之间的对应关系的变量链表。进一步的,查找所述至少两个表达式中的常量表达式,并将所述常量表达式转换为第二变量包括:依次判断所述至少两个表达式中是否存在与变量链表中的表达式相同的目标表达式;若是,则将所述目标表达式替换为所述变量链表中对应的变量;若否,则依次查找所述至少两个表达式中的常量表达式,创建第三变量,其中,所述第三变量与变量链表中的变量不同,将所述第三变量和对应的常量表达式存储至变量链表,并将所述常量表达式替换为所述第三变量。进一步的,将所述至少两个表达式中相同的表达式转换为第一变量包括:依次判断所述至少两个表达式中是否存在相同的表达式;若是,则创建第四变量,其中,所述第四变量与变量链表中的变量不同,将所述第四变量和对应的相同的表达式存储至变量链表,并将所述相同的表达式替换为所述第四变量。第二方面,本专利技术实施例还提供了一种表达式转换装置,该装置包括:获取模块,用于获取表达式链表中的至少两个表达式;转换模块,用于将所述至少两个表达式中相同的表达式转换为第一变量;计算模块,用于于计算所述至少两个表达式时,若当前表达式为第一变量,则替换所述当前表达式为第一变量的对应值。进一步的,还包括:查找模块,用于查找所述至少两个表达式中的常量表达式,并将所述常量表达式转换为第二变量。进一步的,还包括:建立模块,用于在查找所述至少两个表达式中的常量表达式,并将所述常量表达式转换为第二变量之前,建立关于表达式和变量之间的对应关系的变量链表。进一步的,所述查找模块具体用于:依次判断所述至少两个表达式中是否存在与变量链表中的表达式相同的目标表达式;若是,则将所述目标表达式替换为所述变量链表中对应的变量;若否,则依次查找所述至少两个表达式中的常量表达式,创建第三变量,其中,所述第三变量与变量链表中的变量不同,将所述第三变量和对应的常量表达式存储至变量链表,并将所述常量表达式替换为所述第三变量。进一步的,所述转换模块具体用于:依次判断所述至少两个表达式中是否存在相同的表达式;若是,则创建第四变量,其中,所述第四变量与变量链表中的变量不同,将所述第四变量和对应的相同的表达式存储至变量链表,并将所述相同的表达式替换为所述第四变量。第三方面,本专利技术实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本专利技术实施例中任一所述的表达式转换方法。第四方面,本专利技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本专利技术实施例中任一所述的表达式转换方法。本专利技术实施例通过获取表达式链表中的至少两个表达式;将至少两个表达式中相同的表达式转换为第一变量;于计算至少两个表达式时,若当前表达式为第一变量,则替换当前表达式为第一变量的对应值,避免了表达式的重复计算,能够有效的提高性能。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本专利技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1是本专利技术实施例一中的一种表达式转换方法的流程图;图2是本专利技术实施例二中的一种表达式转换方法的流程图;图3是本专利技术实施例三中的一种表达式转换装置的结构示意图;图4是本专利技术实施例四中的一种计算机设备的结构示意图。具体实施方式下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本专利技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。实施例一图1为本专利技术实施例一提供的一种表达式转换方法的流程图,本实施例可适用于表达式转换的情况,该方法可以由本专利技术实施例中的表达式转换装置来执行,该装置可采用软件和/或硬件的方式实现,如图1所示,该方法具体包括如下步骤:S110,获取表达式链表中的至少两个表达式。其中,所述表达式链表可以为布尔表达式中的表达式链表,也可以为其他类型表达式中的表达式链表,本专利技术实施例对此不进行限制。具体的,获取表达式链表中的至少两个表达式的方式可以为直接获取表达式链表中的表达式,也可以为先将表达式链表转换为树形结构,然后再获取树形结构中的表达式,例如可以是,假设有语句selectc1+c2,c1+1,c2+1fromtwherecast(c1+c2asint)=c1+2,其中c1,c2是表的列。在where子句中有布尔表达式cast(c1+c2asint)=c1+2,查询项c1+c2,c1+1,c2+1可以作为表达式链表。假设select查询项是1+1,cast(1+1asdouble),1+cast(1+1asdouble),c1+cast(1+1asdouble),则需要处理的表达式链表就是select的查询项。1+1,cast(1+1asdouble),1+cast(1+1asdouble),c1+cast(1+1asdouble)则为表达式链表中的表达式。S120,将至少两个表达式中相同的表达式转换为第一变量。其中,所述第一变量可以为用户建立的第一变量,也可以为预先建立一个变量链表,变量链表中与相同的表达式对应的第一变量,本专利技术实施例对此不进行限制。其中,所述相同的表达式指的是表达式的展现形式完全相同,例如可以是,若表达式为cast(1+1asdouble)、cast(1+1asdouble),则cast(本文档来自技高网...

【技术保护点】
1.一种表达式转换方法,其特征在于,包括:获取表达式链表中的至少两个表达式;将所述至少两个表达式中相同的表达式转换为第一变量;于计算所述至少两个表达式时,若当前表达式为第一变量,则替换所述当前表达式为第一变量的对应值。

【技术特征摘要】
1.一种表达式转换方法,其特征在于,包括:获取表达式链表中的至少两个表达式;将所述至少两个表达式中相同的表达式转换为第一变量;于计算所述至少两个表达式时,若当前表达式为第一变量,则替换所述当前表达式为第一变量的对应值。2.根据权利要求1所述的方法,其特征在于,还包括:查找所述至少两个表达式中的常量表达式,并将所述常量表达式转换为第二变量;相应的,于计算所述至少两个表达式时,若当前表达式为第一变量,则替换所述当前表达式为第一变量的对应值包括:于计算所述至少两个表达式时,若当前表达式为第一变量和/或第二变量,则替换所述当前表达式为第一变量和/或第二变量的对应值。3.根据权利要求2所述的方法,其特征在于,查找所述至少两个表达式中的常量表达式,并将所述常量表达式转换为第二变量之前,还包括:建立关于表达式和变量之间的对应关系的变量链表。4.根据权利要求3所述的方法,其特征在于,查找所述至少两个表达式中的常量表达式,并将所述常量表达式转换为第二变量包括:依次判断所述至少两个表达式中是否存在与变量链表中的表达式相同的目标表达式;若是,则将所述目标表达式替换为所述变量链表中对应的变量;若否,则依次查找所述至少两个表达式中的常量表达式,创建第三变量,其中,所述第三变量与变量链表中的变量不同,将所述第三变量和对应的常量表达式存储至变量链表,并将所述常量表达式替换为所述第三变量。5.根据权利要求4所述的方法,其特征在于,将所述至少两个表达式中相同...

【专利技术属性】
技术研发人员:张钦朱仲颖
申请(专利权)人:上海达梦数据库有限公司
类型:发明
国别省市:上海,31

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

1