System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及sql分解,尤其涉及一种基于分解sql构建推理路径的方法、系统、终端及介质。
技术介绍
1、在数据库管理系统中,sql被广泛用于查询和操作数据。然而,随着数据量和查询复杂度的增加,传统的sql解析方法在处理复杂查询时面临诸多挑战。
2、现有的sql分解方法对sql语法的支持不够全面,只支持部分的sql语法,生成的subsql不够全面,存在遗漏一些潜在的subsql的问题。并且,现有的sql分解方法中推理出的路径只有一条,无法实现灵活的sql调试。此外,现有技术通常直接解析完整的sql语句,未能充分利用sql中查询条件之间的关系,在调试sql过程中无法精准定位错误条件和直观的展示sql中间执行过程。
技术实现思路
1、本专利技术要解决的技术问题在于,针对现有技术的上述缺陷,提供一种基于分解sql构建推理路径的方法、系统、终端及介质,旨在解决现有技术的sql解析方法在处理复杂查询时容易遗漏一些潜在的subsql、推理出的路径单一以及在调试sql过程中无法精准定位错误条件等问题。
2、为了解决上述技术问题,本专利技术所采用的技术方案如下:
3、第一方面,本专利技术提供一种基于分解sql构建推理路径的方法,其中,所述方法包括:
4、对原始sql进行解析,并识别原始sql中可拆分的条件,得到条件集合,其中,所述条件为所述原始sql中的子句;
5、基于预设的删除规则分别对所述条件集合中若干条件进行删除,每删除一个条件得到
6、基于subsql集合中每个subsql所包含的条件分别构建推理路径。
7、在一种实现方式中,对原始sql进行解析,并识别原始sql中可拆分的条件,得到条件集合,包括:
8、对原始sql进行解析,得到抽象语法树结构;
9、对所述抽象语法树结构中每一个节点的类型进行识别,确定所述抽象语法树结构中可拆分的条件;
10、对确定的可拆分的条件进行后处理,得到所述条件集合。
11、在一种实现方式中,对所述抽象语法树结构中每一个节点的类型进行识别,确定所述抽象语法树结构中可拆分的条件,包括:
12、若所述抽象语法树结构中某个节点的类型为操作类型,则识别该节点的所有孩子节点的类型;
13、若所有孩子节点的类型为非操作类型,则确定该节点为条件节点,并将该节点以及对应的所有孩子节点作为可拆分的条件。
14、在一种实现方式中,对所述抽象语法树结构中每一个节点的类型进行识别,确定所述抽象语法树结构中可拆分的条件,还包括:
15、若所述抽象语法树结构中某个节点为嵌套查询节点,则将所述嵌套查询节点作为可拆分的条件。
16、在一种实现方式中,对所述抽象语法树结构中每一个节点的类型进行识别,还包括:
17、对从抽象语法树结构中识别出的每个可拆分的条件节点添加属性信息,所述属性信息包括:条件节点的标识、条件标识以及条件节点的转移标识。在一种实现方式中,对确定的可拆分的条件进行后处理,得到所述条件集合,包括:
18、识别可拆分的条件中的from类型的条件,并确定是否对from类型的条件进行删除;
19、识别可拆分的条件中的select条件,并基于select条件进行条件合并;
20、若可拆分的条件中某个条件节点不存在对应的兄弟节点,或者该条件节点对应的兄弟节点不包括所述条件节点,则将所述条件节点作为对应的父节点。
21、在一种实现方式中,基于预设的删除规则分别对所述条件集合中若干条件进行删除,每删除一个条件得到一个subsql,得到所述原始sql所对应的subsql集合,包括:
22、基于所述条件集合中条件之间的依赖关系,确定所述条件集合中可被删除的条件子集;
23、基于所述删除规则,按照可被删除的条件子集对所述条件集合中若干条件进行删除,每删除一个条件得到一个subsql,得到所述subsql集合,其中,所述删除规则为被依赖条件如果删除,则依赖于该条件的所有条件均删除。
24、在一种实现方式中,基于所述条件集合中条件之间的依赖关系,确定所述条件集合中可被删除的条件子集,包括:
25、基于所述条件集合中条件之间的依赖关系,确定所述条件集合中依赖条件与被依赖条件;
26、将全部的所述依赖条件与全部的所述被依赖条件作为可被删除的条件子集;其中,只有全部的依赖条件纳入可被删除的条件子集时,被依赖条件才纳入可被删除的条件子集。
27、在一种实现方式中,基于所述删除规则,按照可被删除的条件子集对所述条件集合中若干条件进行删除,每删除一个条件得到一个subsql,得到所述subsql集合,包括:
28、依次获取可被删除的条件子集中每一个条件,并依次将所述条件集合对应的条件删除,且每删除一个条件得到一个subsql;
29、基于所有的subsql,得到所述subsql集合。
30、在一种实现方式中,依次获取可被删除的条件子集中每一个条件,并依次将所述条件集合对应的条件删除,包括:
31、若从可被删除的条件子集中获取的条件的类型为算数操作类型,则确定算数操作类型的条件所对应的两个条件节点,其中,两个条件节点互为兄弟节点;
32、在对其中一个条件节点删除时,使用对应的兄弟节点替换父节点的方式实现删除。
33、在一种实现方式中,基于subsql集合中每个subsql所包含的条件分别构建推理路径,包括:
34、基于subsql集合,确定包含条件最少的subsql以及包含条件最多的subsql,其中,包含条件最多的subsql为原始sql;
35、基于包含条件最少的subsql和包含条件最多的subsql,构建推理路径。
36、在一种实现方式中,基于包含条件最少的subsql和包含条件最多的subsql,构建推理路径,包括:
37、将包含条件最少的subsql作为推理路径的起点,将包含条件最多的subsql作为推理路径的终点;
38、从起点开始逐个遍历所有subsql,且若遍历到的当前subsql比前一个subsql多一个条件,则当前subsql作为下一个起点,以此类推,直至到达终点,得到所有的推理路径。
39、第二方面,本专利技术实施例还提供一种基于分解sql构建推理路径的系统,其中,所述系统包括:
40、条件集合确定模块,用于对原始sql进行解析,并识别原始sql中可拆分的条件,得到条件集合,其中,所述条件为所述原始sql中的子句;
41、部分条件删除模块,用于基于预设的删除规则分别对所述条件集合中若干条件进行删除,每删除一个条件得到一个subsql,得到所述原始sql所对应的subsql集合;
42、推本文档来自技高网...
【技术保护点】
1.一种基于分解SQL构建推理路径的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于分解SQL构建推理路径的方法,其特征在于,对原始SQL进行解析,并识别原始SQL中可拆分的条件,得到条件集合,包括:
3.根据权利要求2所述的基于分解SQL构建推理路径的方法,其特征在于,对所述抽象语法树结构中每一个节点的类型进行识别,确定所述抽象语法树结构中可拆分的条件,包括:
4.根据权利要求3所述的基于分解SQL构建推理路径的方法,其特征在于,对所述抽象语法树结构中每一个节点的类型进行识别,确定所述抽象语法树结构中可拆分的条件,还包括:
5.根据权利要求2所述的基于分解SQL构建推理路径的方法,其特征在于,对所述抽象语法树结构中每一个节点的类型进行识别,还包括:
6.根据权利要求2所述的基于分解SQL构建推理路径的方法,其特征在于,对确定的可拆分的条件进行后处理,得到所述条件集合,包括:
7.根据权利要求1所述的基于分解SQL构建推理路径的方法,其特征在于,基于预设的删除规则分别对所述条件集合中若干条件进行
8.根据权利要求7所述的基于分解SQL构建推理路径的方法,其特征在于,基于所述条件集合中条件之间的依赖关系,确定所述条件集合中可被删除的条件子集,包括:
9.根据权利要求7所述的基于分解SQL构建推理路径的方法,其特征在于,基于所述删除规则,按照可被删除的条件子集对所述条件集合中若干条件进行删除,每删除一个条件得到一个subSQL,得到所述subSQL集合,包括:
10.根据权利要求9所述的基于分解SQL构建推理路径的方法,其特征在于,依次获取可被删除的条件子集中每一个条件,并依次将所述条件集合对应的条件删除,包括:
11.根据权利要求1所述的基于分解SQL构建推理路径的方法,其特征在于,基于subSQL集合中每个subSQL所包含的条件分别构建推理路径,包括:
12.根据权利要求11所述的基于分解SQL构建推理路径的方法,其特征在于,基于包含条件最少的subSQL和包含条件最多的subSQL,构建推理路径,包括:
13.一种基于分解SQL构建推理路径的系统,其特征在于,所述系统包括:
14.一种终端,其特征在于,所述终端包括存储器、处理器及存储在所述存储器中并可在所述处理器上运行的基于分解SQL构建推理路径的程序,所述处理器执行基于分解SQL构建推理路径的程序时,实现如权利要求1-12任一项所述的基于分解SQL构建推理路径的方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有基于分解SQL构建推理路径的程序,所述基于分解SQL构建推理路径的程序被处理器执行时,实现如权利要求1-12任一项所述的基于分解SQL构建推理路径的方法的步骤。
...【技术特征摘要】
1.一种基于分解sql构建推理路径的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于分解sql构建推理路径的方法,其特征在于,对原始sql进行解析,并识别原始sql中可拆分的条件,得到条件集合,包括:
3.根据权利要求2所述的基于分解sql构建推理路径的方法,其特征在于,对所述抽象语法树结构中每一个节点的类型进行识别,确定所述抽象语法树结构中可拆分的条件,包括:
4.根据权利要求3所述的基于分解sql构建推理路径的方法,其特征在于,对所述抽象语法树结构中每一个节点的类型进行识别,确定所述抽象语法树结构中可拆分的条件,还包括:
5.根据权利要求2所述的基于分解sql构建推理路径的方法,其特征在于,对所述抽象语法树结构中每一个节点的类型进行识别,还包括:
6.根据权利要求2所述的基于分解sql构建推理路径的方法,其特征在于,对确定的可拆分的条件进行后处理,得到所述条件集合,包括:
7.根据权利要求1所述的基于分解sql构建推理路径的方法,其特征在于,基于预设的删除规则分别对所述条件集合中若干条件进行删除,每删除一个条件得到一个subsql,得到所述原始sql所对应的subsql集合,包括:
8.根据权利要求7所述的基于分解sql构建推理路径的方法,其特征在于,基于所述条件集合中条件之间的依赖关系,确定所述条件集合中可被删除的条件子集,包括:
9.根据权利要求7所述...
【专利技术属性】
技术研发人员:杨海钦,代亚勋,幺宝刚,
申请(专利权)人:粤港澳大湾区数字经济研究院福田,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。