1 .一种数据库查询语句的查询方法,包括:
获取查询语句;
对所述查询语句进行语法解析,得到语法树;
对所述语法树进行语义解析,并构建初始查询树和目标列列表;
检查所述查询语句是否存在聚集函数的嵌套调用;
若存在,根据所述目标列列表将所述初始查询树分离为父查询树和子查询树;
利用所述父查询树和所述子查询树进行查询。
2.根据权利要求1所述的数据库查询语句的查询方法,其中,所述对所述语法树进行语
义解析的步骤包括:
检查所述查询语句的目标列表达式是否存在聚集函数的嵌套调用,若存在,记录标记
信息;
所述检查所述查询语句是否存在聚集函数的嵌套调用的步骤包括:
根据所述标记信息判断所述查询语句是否存在聚集函数的嵌套调用。
3 .根据权利要求2所述的数据库查询语句的查询方法,其中,所述对所述语法树进行语
义解析的步骤还包括:
将查询语句中的FROM子句的表达式引用的表添加到所述初始查询树中;
将所述目标列表达式添加到所述目标列列表中,标记为输出目标列。
4 .根据权利要求3所述的数据库查询语句的查询方法,其中,在所述查询语句存在第一
预设种类的子句的条件下,所述对所述语法树进行语义解析的步骤还包括:
将所述查询语句语句中的所述第一预设种类的子句的表达式添加到所述目标列列表
中,并标记为非输出目标列。
5 .根据权利要求4所述的数据库查询语句的查询方法,其中,所述第一预设种类的子句
包括ORDER BY子句、GROUP BY子句和OVER子句。
6 .根据权利要求5所述的数据库查询语句的查询方法,其中,所述根据所述目标列列表
将所述初始查询树分离为父查询树和子查询树的步骤包括:
构建新的查询树作为所述父查询树,将所述初始查询树作为所述子查询树添加到所述
父查询树中;
遍历所述子查询树对应的目标列列表中的表达式,判断所述表达式是否为输出目标
列,若是,将所述表达式添加到所述父查询树的目标列列表中;
若否,判断所述表达式是否属于GROUP BY子句,若是,将所述表达式保留在所述子查询
树的目标列列表中,若否,删除所述表达式;
在所述子查询树对应的目标列列表中的表达式遍历完成后,遍历所述父查询树的目标
列列表中的表达式,检查所述父查询树的目标列列表中的表达式是否含有聚集函数作为的
参数,若是,将所述参数回推至所述子查询树的目标列列表中。
7 .根据权利要求2所述的数据库查询语句的查询方法,其中,在所述查询语句存在第二
预设种类的子句的条件下,所述对所述语法树进行语义解析的步骤还包括:
检查所述第二预设种类的子句的表达式是否符合预设要求,若存在不符合预设要求的
子句,输出错误信息。
8.根据权利要求7所述的数据库查询语句的查询方法,其中,所述第二预设种类的子句
权 利 要 求 书
1/2 页
2
评论