(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202210923624.5
(22)申请日 2022.08.02
(71)申请人 北京奥星贝斯科技有限公司
地址 100102 北京市朝阳区望京东园四区
13号楼-4至 33层101内23层201室
(72)发明人 朱涛 王国平
(74)专利代理 机构 北京亿腾知识产权代理事务
所(普通合伙) 11309
专利代理师 张明 周良玉
(51)Int.Cl.
G06F 16/242(2019.01)
G06F 16/2453(2019.01)
G06F 16/2455(2019.01)
(54)发明名称
SQL语句的处 理方法及装置
(57)摘要
本说明书实施例提供一种SQL语句的处理方
法及装置, 在处理方法中, 获取待处理的原始SQL
语句, 其中包括主查询语句和子查询语句。 该主
查询语句和子查询语句各自的查询源表子句分
别包括第一数据表和第二数据表; 主查询语句的
主查询条件子句包括, 依赖于子查询语句的子查
询结果的目标查询条件。 判断目标查询条件是否
支持子查询结果为空; 根据判断结果, 对原始SQL
语句进行等价改写, 得到目标SQL语句。 该目标
SQL语句用于基于第一和第二数据表的内连接结
果集或外连接结果 集进行查询。
权利要求书4页 说明书14页 附图2页
CN 115292350 A
2022.11.04
CN 115292350 A
1.一种SQ L语句的处 理方法, 包括:
获取待处理的原始SQL语句, 其中包括主查询语句和子查询语句; 所述主查询语句的主
查询源表子句包括第一数据表, 所述子查询语句的子查询源表子句包括第二数据表; 所述
主查询语句的主查询条件子句包括, 依赖于所述子查询语句的子查询结果的目标查询条
件;
判断所述目标查询条件是否支持所述子查询结果 为空;
根据判断结果, 对所述原始SQL语句进行等价改写, 得到目标SQL语句; 所述目标SQL语
句用于基于所述第一和第二数据表的内连接结果 集或外连接结果 集进行查询。
2.根据权利要求1所述的方法, 其中, 所述根据判断结果, 对所述原始SQL语句进行等价
改写, 包括:
若所述判断结果指示, 所述目标查询条件不支持所述子查询结果为空, 则将所述原始
SQL语句等价改写为第一目标SQL语句, 用于基于所述第一和第二数据 表的内连接结果集进
行查询。
3.根据权利 要求2所述的方法, 其中, 所述将所述原始SQL语句等价改写为第一目标SQL
语句, 包括:
将所述第二数据表添加到所述主查询源表子句中;
将所述子查询语句的子查询条件子句中的查询条件, 添加到所述主查询条件子句中;
将所述子查询语句, 替换为所述子查询语句的子查询选择子句中的子查询表达式。
4.根据权利要求2所述的方法, 其中, 所述子查询语句的子查询选择子句包括自定义函
数, 用于根据所述子查询结果的行数输出是否异常的指示值; 所述 目标查询条件包括自定
义表达式, 用于在所述指示 值指示异常时输出报错信息;
所述将所述原 始SQL语句等价改写为第一目标SQ L语句, 包括:
将所述第二数据表添加到所述主查询源表子句中;
将所述子查询语句的子查询条件子句中的查询条件, 添加到所述主查询条件子句中;
在所述主查询语句中包 含所述自定义 函数和自定义表达式。
5.根据权利要求4所述的方法, 其中, 所述自定义函数的输入变量为子查询表达式; 所
述自定义表达式的输入变量 为所述子查询语句;
所述在所述主查询语句中包 含所述自定义 函数和自定义表达式, 包括:
为所述主查询语句添加分组子句及其对应的分组过滤子句, 并将分组子句中的分组列
设定为所述第一数据表中满足唯一 性约束的属性列;
将所述目标查询条件移动到所述分组过 滤子句中;
用所述自定义函数, 替换所述自定义表达式的输入变量, 并用得到的中间表达式替换
所述子查询语句。
6.根据权利要求1所述的方法, 其中, 所述根据判断结果, 对所述原始SQL语句进行等价
改写, 包括:
若所述判断结果指示, 所述目标查询条件支持所述子查询结果为空, 则将所述原始SQL
语句等价改写为第二 目标SQL语句, 用于基于所述第一和第二数据表的外连接结果集进行
查询。
7.根据权利 要求6所述的方法, 其中, 所述将所述原始SQL语句等价改写为第二目标SQL权 利 要 求 书 1/4 页
2
CN 115292350 A
2语句, 包括:
将所述第二数据表作为外连接的右 表, 添加到所述主查询源表子句中;
将所述子查询语句的子查询条件子句中的查询条件, 作为所述外连接的连接条件添加
到所述主查询源表子句中;
基于所述第 二数据表中满足非空约束的属性列, 以及所述子查询语句的子查询选择子
句中的子查询表达式, 构造第一条件 控制语句, 并用其 替换所述子查询语句。
8.根据权利要求7 所述的方法, 其中, 所述构造第一条件 控制语句, 包括:
通过将所述满足非空约束的属性列的取值作为判断条件, 并将所述子查询表达 式的值
和空值, 分别作为对应于 两个判断结果的两个返回值, 构造所述第一条件 控制语句。
9.根据权利要求6所述的方法, 其中, 所述子查询语句的子查询选择子句包括自定义函
数, 用于根据所述子查询结果的行数输出是否异常的指示值; 所述 目标查询条件包括自定
义表达式, 用于在所述指示 值指示异常时输出报错信息;
所述将所述原 始SQL语句等价改写为第二目标SQ L语句, 包括:
将所述第二数据表作为外连接的右 表, 添加到所述主查询源表子句中;
将所述子查询语句的子查询条件子句中的查询条件, 作为所述外连接的连接条件添加
到所述主查询源表子句中;
在所述主查询语句中包 含所述自定义 函数和自定义表达式。
10.根据权利要求9所述的方法, 其中, 所述自定义函数的输入变量为子查询表达 式; 所
述自定义表达式的输入变量 为所述子查询语句;
所述在所述主查询语句中包 含所述自定义 函数和自定义表达式, 包括:
为所述主查询语句添加分组子句及其对应的分组过滤子句, 将所述分组子句中的分组
列设定为所述第一数据表中满足唯一 性约束的属性列;
将所述目标查询条件移动到所述分组过 滤子句中;
基于所述第二数据表中满足非空约束的属性列, 以及所述自定义函数和自定义表达
式, 构造第二条件 控制语句, 并用其 替换所述子查询语句。
11.根据权利要求10所述的方法, 其中, 所述构造第二条件 控制语句, 包括;
用所述自定义 函数替换 所述自定义表达式的输入变量, 得到中间表达式;
通过将所述满足非空约束的属性列的取值作为判断条件, 并将所述中间表达式的值和
空值, 分别作为对应于 两个判断结果的两个返回值, 构造所述第二条件 控制语句。
12.根据权利要求1所述的方法, 还 包括:
向查询优化器发送所述目标SQL语句, 以使得所述查询优化器基于所述目标SQL语句,
制定目标查询计划。
13.根据权利要求1所述的方法, 其中, 所述方法通过查询优化器执行; 所述方法还包
括:
基于所述目标SQ L语句, 制定目标查询计划。
14.根据权利要求1所述的方法, 其中, 所述目标查询条件不属于预定类型的查询条件;
所述预定类型的查询条件包含以下过滤词中的任一种: IN、 NOT IN、 ANY、 ALL、 EXISTS和NOT
EXISTS。
15.一种SQ L语句的处 理装置, 包括:权 利 要 求 书 2/4 页
3
CN 115292350 A
3
专利 SQL语句的处理方法及装置
文档预览
中文文档
21 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共21页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 17:14:06上传分享