[发明专利]SQL语句的处理方法及装置在审
| 申请号: | 202210923624.5 | 申请日: | 2022-08-02 |
| 公开(公告)号: | CN115292350A | 公开(公告)日: | 2022-11-04 |
| 发明(设计)人: | 朱涛;王国平 | 申请(专利权)人: | 北京奥星贝斯科技有限公司 |
| 主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/2453;G06F16/2455 |
| 代理公司: | 北京亿腾知识产权代理事务所(普通合伙) 11309 | 代理人: | 张明;周良玉 |
| 地址: | 100102 北京市朝阳区望京东园*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | sql 语句 处理 方法 装置 | ||
1.一种SQL语句的处理方法,包括:
获取待处理的原始SQL语句,其中包括主查询语句和子查询语句;所述主查询语句的主查询源表子句包括第一数据表,所述子查询语句的子查询源表子句包括第二数据表;所述主查询语句的主查询条件子句包括,依赖于所述子查询语句的子查询结果的目标查询条件;
判断所述目标查询条件是否支持所述子查询结果为空;
根据判断结果,对所述原始SQL语句进行等价改写,得到目标SQL语句;所述目标SQL语句用于基于所述第一和第二数据表的内连接结果集或外连接结果集进行查询。
2.根据权利要求1所述的方法,其中,所述根据判断结果,对所述原始SQL语句进行等价改写,包括:
若所述判断结果指示,所述目标查询条件不支持所述子查询结果为空,则将所述原始SQL语句等价改写为第一目标SQL语句,用于基于所述第一和第二数据表的内连接结果集进行查询。
3.根据权利要求2所述的方法,其中,所述将所述原始SQL语句等价改写为第一目标SQL语句,包括:
将所述第二数据表添加到所述主查询源表子句中;
将所述子查询语句的子查询条件子句中的查询条件,添加到所述主查询条件子句中;
将所述子查询语句,替换为所述子查询语句的子查询选择子句中的子查询表达式。
4.根据权利要求2所述的方法,其中,所述子查询语句的子查询选择子句包括自定义函数,用于根据所述子查询结果的行数输出是否异常的指示值;所述目标查询条件包括自定义表达式,用于在所述指示值指示异常时输出报错信息;
所述将所述原始SQL语句等价改写为第一目标SQL语句,包括:
将所述第二数据表添加到所述主查询源表子句中;
将所述子查询语句的子查询条件子句中的查询条件,添加到所述主查询条件子句中;
在所述主查询语句中包含所述自定义函数和自定义表达式。
5.根据权利要求4所述的方法,其中,所述自定义函数的输入变量为子查询表达式;所述自定义表达式的输入变量为所述子查询语句;
所述在所述主查询语句中包含所述自定义函数和自定义表达式,包括:
为所述主查询语句添加分组子句及其对应的分组过滤子句,并将分组子句中的分组列设定为所述第一数据表中满足唯一性约束的属性列;
将所述目标查询条件移动到所述分组过滤子句中;
用所述自定义函数,替换所述自定义表达式的输入变量,并用得到的中间表达式替换所述子查询语句。
6.根据权利要求1所述的方法,其中,所述根据判断结果,对所述原始SQL语句进行等价改写,包括:
若所述判断结果指示,所述目标查询条件支持所述子查询结果为空,则将所述原始SQL语句等价改写为第二目标SQL语句,用于基于所述第一和第二数据表的外连接结果集进行查询。
7.根据权利要求6所述的方法,其中,所述将所述原始SQL语句等价改写为第二目标SQL语句,包括:
将所述第二数据表作为外连接的右表,添加到所述主查询源表子句中;
将所述子查询语句的子查询条件子句中的查询条件,作为所述外连接的连接条件添加到所述主查询源表子句中;
基于所述第二数据表中满足非空约束的属性列,以及所述子查询语句的子查询选择子句中的子查询表达式,构造第一条件控制语句,并用其替换所述子查询语句。
8.根据权利要求7所述的方法,其中,所述构造第一条件控制语句,包括:
通过将所述满足非空约束的属性列的取值作为判断条件,并将所述子查询表达式的值和空值,分别作为对应于两个判断结果的两个返回值,构造所述第一条件控制语句。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奥星贝斯科技有限公司,未经北京奥星贝斯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210923624.5/1.html,转载请声明来源钻瓜专利网。





