CN109308300A - 一种逻辑运算的处理方法、装置、转换插件及存储介质 - Google Patents

一种逻辑运算的处理方法、装置、转换插件及存储介质 Download PDF

Info

Publication number
CN109308300A
CN109308300A CN201811133260.0A CN201811133260A CN109308300A CN 109308300 A CN109308300 A CN 109308300A CN 201811133260 A CN201811133260 A CN 201811133260A CN 109308300 A CN109308300 A CN 109308300A
Authority
CN
China
Prior art keywords
sql query
conditional expression
querying condition
expression
query conditional
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811133260.0A
Other languages
English (en)
Other versions
CN109308300B (zh
Inventor
望声宜
朱仲颖
万伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Dameng Database Co Ltd
Original Assignee
Shanghai Dameng Database Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Dameng Database Co Ltd filed Critical Shanghai Dameng Database Co Ltd
Priority to CN201811133260.0A priority Critical patent/CN109308300B/zh
Publication of CN109308300A publication Critical patent/CN109308300A/zh
Application granted granted Critical
Publication of CN109308300B publication Critical patent/CN109308300B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种逻辑运算的处理方法、装置、转换插件及存储介质。通过获取原始SQL查询条件表达式,将原始SQL查询条件表达式按照第一预设规则等价转换生成目标SQL查询条件表达式,然后存储或执行包含该目标SQL查询条件表达式的SQL语句。实现通过提取出相同的查询条件表达式来简化SQL语句中的逻辑运算表达式,以提高数据检索效率。

Description

一种逻辑运算的处理方法、装置、转换插件及存储介质
技术领域
本发明涉及数据处理技术领域,尤其涉及一种逻辑运算的处理方法、装置、转换插件及存储介质。
背景技术
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。此外,结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能,并且它的影响已经超出数据库领域,得到其他领域的重视和采用,如人工智能领域的数据检索,第四代软件开发工具中嵌入SQL的语言等。
SQL语句中常用逻辑运算符AND和OR来联结多个查询条件。在实际应用中, SQL语句逻辑复杂且冗长,数据库中的记录需要同时满足一个或多个条件才能返回给用户。应用中编写的SQL语句,可能包含相同的查询条件,如此会出现多次重复执行相同查询条件的情况,影响数据检索效率。
发明内容
本发明实施例提供一种逻辑运算的处理方法、装置、转换插件及存储介质,通过提取出相同的查询条件表达式来简化SQL语句中的逻辑运算表达式,以提高数据检索效率。
第一方面,本发明实施例提供了一种逻辑运算的处理方法,该方法包括:
获取原始SQL查询条件表达式;
将所述原始SQL查询条件表达式按照第一预设规则等价转换生成目标SQL 查询条件表达式;
存储或执行包含所述目标SQL查询条件表达式的SQL语句。
第二方面,本发明实施例还提供了一种逻辑运算的处理装置,该装置包括:
获取语句模块,用于获取原始SQL查询条件表达式;
处理语句模块,用于将所述原始SQL查询条件表达式按照第一预设规则等价转换生成目标SQL查询条件表达式;
结果语句执行模块,用于存储或执行包含所述目标SQL查询条件表达式的 SQL语句。
第三方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明实施例提供的逻辑运算的处理方法。
第四方面,本发明实施例还提供了一种转换插件,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例提供的逻辑运算的处理方法。
本发明实施例,获取原始SQL查询条件表达式,将原始SQL查询条件表达式按照第一预设规则等价转换生成目标SQL查询条件表达式,然后存储或执行包含该目标SQL查询条件表达式的SQL语句。实现通过提取出相同的查询条件表达式来简化SQL语句中的逻辑运算表达式,以提高数据检索效率。
附图说明
图1是本发明实施例提供的一种逻辑运算的处理方法的流程示意图;
图2是本发明实施例提供的另一种逻辑运算的处理方法的流程示意图;
图3是本发明实施例提供的一种逻辑运算的处理装置的结构示意图;
图4是本发明实施例提供的一种转换插件的结构示意图。
图5是逻辑运算(A AND B)OR(C AND A)的语法树结构图;
图6是逻辑运算A AND B AND C的原始语法树结构图;
图7是逻辑运算A AND B AND C规则转换后的语法树结构图;
图8是逻辑运算((A AND B)OR(C AND A))AND B的语法树结构图;
图9是逻辑运算((A AND B)OR(C AND A))AND B第一次转换后的语法树结构图;
图10是逻辑运算((A AND B)OR(C AND A))AND B第二次转换后的语法树结构图;
图11是逻辑运算((A AND B)OR(C AND A))AND B第三次转换后的语法树结构图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
图1为本发明实施例提供的一种逻辑运算的处理方法的流程示意图,该方法可以由本发明实施例提供的转换插件来执行,该转换插件可采用软件和/或硬件方式实现,该方法具体包括如下步骤:
步骤110、获取原始SQL查询条件表达式;
SQL语句中常用逻辑运算符AND和OR来连接多个查询条件表达式,在实际生产应用中,SQL语句的逻辑复杂且冗长,数据库中的记录需要同时满足一个或多个查询条件表达式才能返回给用户。此外,应用中编写的SQL语句,可能包含相同的查询条件表达式,如此多次重复执行相同的查询条件表达式会影响数据检索效率。针对这样的SQL语句,本发明通过提取出相同的查询条件表达式来简化逻辑运算,减少查询条件表达式的个数,以达到提高数据检索效率的目的。
本实施例中,原始SQL查询条件表达式是由逻辑运算符AND和OR连接的多个查询条件表达式,原始SQL查询条件表达式中存在相同的查询条件表达式,此时,需要提取出这些相同的查询条件表达式,以减少查询条件表达式的个数,简化SQL语句表达式的逻辑运算。本实施例中所述的SQL语句可以是用户通过操作界面输入的SQL语句,也可以是获取的预存在数据库中的历史记录的SQL 语句。
步骤120、将所述原始SQL查询条件表达式按照第一预设规则等价转换生成目标SQL查询条件表达式;
一实施例中,在SQL数据库中,创建学生表、课程表和学生选课表,并分别写入具体的学生表信息、课程表信息和学生选课表信息,对应的SQL语句如下所示:
INSERT INTO Student VALUES(201851801,'张三','女',20,'CS');
INSERT INTO Student VALUES(201851802,'李四','男',18,'CS');
INSERT INTO Student VALUES(201851803,'王五','女',19,'MA');
INSERT INTO Student VALUES(201851804,'刘六','男',20,'IS');
INSERT INTO Course VALUES(1,'数学',2);
INSERT INTO Course VALUES(2,'数学结构',4);
INSERT INTO Course VALUES(3,'数学库',4);
INSERT INTO Course VALUES(4,'操作系统',3);
INSERT INTO Student_Course VALUES(201851801,1,96);
INSERT INTO Student_Course VALUES(201851801,2,85);
INSERT INTO Student_Course VALUES(201851802,2,90);
INSERT INTO Student_Course VALUES(201851803,2,91);
INSERT INTO Student_Course VALUES(201851803,3,80);
COMMIT;
该实施例中,查询计算机科学系(CS),选修了数学课程且成绩在90分以上的学生,或者选修了数据结构课程且成绩在90分以上的学生。对应的SQL语句如下:
SELECT Student.Sno,Sname,Sdept
From Student,Course,Student_Course
WHERE Student.Sno=Student_Course.Sno
AND Course.Cno=Student_Course.Cno
AND Student.Sdept='CS'
AND
((Student_Course.Cno=1AND Student_Course.Grade>=90)
OR
(Student_Course.Cno=2AND Student_Course.Grade>=90));
--返回结果如下:
上述例子中SQL语句包含相同的查询条件表达式:
“Student_Course.Grade>=90”
该实施例中,SQL语句中原始SQL查询条件表达式为:
(Student_Course.Cno=1AND Student_Course.Grade>=90)
OR
(Student_Course.Cno=2AND Student_Course.Grade>=90)
按照第一预设规则等价转换生成的目标SQL查询条件表达式为:
Student_Course.Grade>=90
AND(Student_Course.Cno=1OR Student_Course.Cno=2)
该实施例中,提取出相同的查询条件表达式,简化逻辑运算后的SQL查询语句为:
SELECT Student.Sno,Sname,Sdept
From Student,Course,Student_Course
WHERE Student.Sno=Student_Course.Sno
AND Course.Cno=Student_Course.Cno
AND Student.Sdept='CS'
AND Student_Course.Grade>=90
AND(Student_Course.Cno=1OR Student_Course.Cno=2);
对比简化前后的两个SQL查询语句可知,简化前的语句中有两个查询条件表达式“Student_Course.Grade>=90”,而简化后的语句中只有一个查询条件表达式“Student_Course.Grade>=90”,如此,在执行SQL查询语句时,可避免相同的查询条件表达式多次重复执行,从而提高执行速度。在存储SQL 查询语句时,可减少存储空间。
步骤130、存储或执行包含所述目标SQL查询条件表达式的SQL语句。
在得到简化后的SQL语句之后,可将该SQL语句存储在数据库中,或者在数据库中直接运行该SQL语句,以得到对应的运行结果。
本实施例的技术方案,获取原始SQL查询条件表达式,将原始SQL查询条件表达式按照第一预设规则等价转换生成目标SQL查询条件表达式,然后存储或执行包含该目标SQL查询条件表达式的SQL语句。实现通过提取出相同的查询条件表达式来简化SQL语句中的逻辑运算表达式,以提高数据检索效率。
图2是本发明实施例提供的另一种逻辑运算的处理方法的流程示意图,参见图2,该方法进一步包括如下步骤:
步骤210、对SQL语句采用后根遍历递归解析,生成所述原始SQL查询条件表达式;
步骤220、在解析过程中,遍历所述原始SQL查询条件表达式,将所述原始SQL查询条件表达式中满足第一预设规则的查询条件表达式进行等价转换为所述目标SQL查询条件表达式;
进一步的,步骤220还包括:
S1:在解析过程中,遍历所述原始SQL查询条件表达式,并按照第二预设规则简化所述原始SQL查询条件表达式;
其中,按照所述第二预设规则简化后的SQL查询条件表达式有如下特征:
逻辑运算符AND的分支为所述第一查询条件表达式或多个所述第一查询条件表达式通过逻辑运算符OR连接的第二查询条件表达式中的一种;
逻辑运算符OR的分支为第一查询条件表达式或多个所述第一查询条件表达式通过逻辑运算符AND连接的第二查询条件表达式中的一种。
S2:将简化后的所述原始SQL查询条件表达式按照所述第一预设规则等价转换生成所述目标SQL查询条件表达式。
本实施例中,所述第一预设规则包括等价转换前的第一预设SQL查询条件表达式和等价转换后的第二预设SQL查询条件表达式。需要说明的是,所述原始SQL查询条件表达式中存在所述第一预设SQL查询条件表达式,所述目标SQL 查询条件表达式中存在所述第二预设SQL查询条件表达式。
所述第一预设规则中的SQL查询条件表达式包括父运算符和由父运算符关联的两个或多个分支,所述父运算符为逻辑运算符AND或OR中的一种;所述分支为第一查询条件表达式或多个所述第一查询条件表达式通过逻辑运算符AND 或OR连接的第二查询条件表达式中的一种,其中,所述第一查询条件表达式为逻辑比较运算表达式、范围确定运算表达式、集合设定运算表达式、字符匹配运算表达式以及空值中的一种。例如:逻辑比较运算(=、>、<)、范围确定运算(BETWEEN…AND)、逻辑运算(AND\OR)、集合设定运算(IN)、字符匹配运算符(LIKE),以及空值(IS NULL),圆括号内的运算符只是举例说明,并不包含全部。此外,所述第二查询条件表达式中的逻辑运算符不同于所述父运算符。
所述第一预设规则包括以下四个等价转换逻辑运算公式:
公式1:(A AND B)OR(A AND C)=A AND(B OR C);
公式2:(A OR B)AND(A OR C)=A OR(B AND C);
公式3:(A AND B)OR(A AND C)…OR(A AND Z)=A AND(B OR C… OR Z);
公式4:(A OR B)AND(A OR C)…AND(A OR Z)=A OR(B AND C…AND Z);
其中,A、B、C…Z为所述第一查询条件表达式,或者所述第二查询条件表达式中的一种,AND和OR为逻辑运算符,公式3和公式4由公式1和公式2扩展得出。
所述第二预设规则包括以下四个等价转换逻辑运算公式:
公式5:A OR A=A;
公式6:A AND A=A;
公式7:(A AND B)OR A=A;
公式8:(A OR B)AND A=A;
其中,A、B为所述第一查询条件表达式,或者所述第二查询条件表达式中的一种,AND和OR为逻辑运算符。
一实施例中,对逻辑运算进行语法解析时,采用递归解析的方法,类似后 根遍历,解析过程中会生成语法树结构。逻辑运算符AND或OR是双目运算符, 从左到右解析,AND的优先级比OR的优先级高,可以使用“()”调整解析顺序, 如(A OR B)AND C与A OR B AND C表示不同的含义。示例性的,逻辑运算(A AND B)OR(C AND A)语法解析顺序为A->B->AND->C->A->AND->OR,语法树结构如 图5所示。
语法树结构包括父运算符(简称上层)和由父运算符关联的两个分支,本实施例的分支包括“A AND B”和“C AND A”,父运算符为逻辑运算符OR。本实施例中,每个分支为第一查询条件表达式。替代实施例中,原始SQL查询条件表达式可以包括多个类似上述语法树结构。
本实施例中,原始SQL查询条件表达式语法解析过程中根据第二预设规则 (前述公式5-8)进行转换,简化逻辑运算,具体转换规则可以包括:
1、如果第一SQL语句的语法树结构中左右查询条件表达式相同,则用左查询条件表达式覆盖上层运算符关联的两个分支,如公式5和6,用“A”替换“A OR A”,即“A”覆盖“AOR A”。
公式5:A OR A=A;
公式6:A AND A=A;
2、如果AND的上层仍是AND,则上层的AND不在语法树上添加新层次(生成语法树结构时,省略上层运算符)。
a)如果当前AND是左查询条件,则将上层AND(父运算符)的右查询条件添加到当前AND分支。如果右查询条件也是AND,则逐个取出右查询条件的分支添加到当前AND分支,否则作为整体添加到当前AND分支。
b)如果当前AND是右查询条件,则将上层AND的左查询条件作为整体添加到当前AND分支。
相应的示例性说明如下:
A AND B AND C语法解析顺序是A->B->AND->C->AND,原始语法树结构如图 6所示,规则转换后的语法树结构如图7所示。
由此可知,转换后的语法树结构更简单。
3、如果OR的上层仍是OR,则上层的OR不在语法树上添加新层次(与上述2所述的原理相同)。
a)如果当前OR是左查询条件,则将上层OR的右查询条件添加到当前OR 分支。如果右查询条件也是OR,则逐个取出右查询条件的分支添加到当前OR分支,否则作为整体添加到当前OR分支。
b)如果当前OR是右查询条件,则将上层OR的左查询条件作为整体添加到当前OR分支。
4、如果OR的上层是AND,检查是否满足公式8(A OR B)AND A=A。
a)如果当前OR是左查询条件,AND的右查询条件与OR现有分支相同,则用右查询条件覆盖上层运算符关联的两个分支。如:(A OR B)AND A 可以简化为A。
b)如果当前OR是右查询条件,AND的左查询条件与OR现有分支相同,则用左查询条件覆盖上层运算符关联的两个分支。如:A AND(A OR B) 可以简化为A。
5、如果AND的上层是OR,检查是否满足公式7(A AND B)OR A=A。
a)如果当前AND是左查询条件,OR的右查询条件与AND现有分支相同,则用右查询条件覆盖上层运算符关联的两个分支。如:(A AND B)OR A 可以简化为A。
b)如果当前AND是右查询条件,OR的左查询条件与AND现有分支相同,则用左查询条件覆盖上层运算符关联的两个分支。如:A OR(A AND B) 可以简化为A。
6、运用上述转换规则2和3调整逻辑运算层次关系时,结合转换规则1、 4和5简化逻辑运算,经过转换规则2和3转换后,逻辑运算满足以下两个特点:
a)AND的分支只包括其它种类的查询条件或者逻辑运算符OR;
b)OR的分支只包括其它种类的查询条件或者逻辑运算符AND。
基于以上两个特点,可以简单有效的结合其他转换规则1、4和5进一步简化逻辑运算,具体如下:
如果上层是AND,将预新添加的分支添加到AND时,逐个取出AND已有分支。
a)如果新分支与AND已有分支满足上述转换规则1,抛弃预新添加的分支。如:AAND B AND A,简化为A AND B。
b)如果新分支OR与AND已有的分支满足上述转换规则4,抛弃预新添加的分支。如:(A AND B)AND(A OR D)依转换规则2转换为A AND B AND (A OR D),依据转换规则4简化为A AND B。
c)如果新分支与AND已有的分支OR满足上述转换规则4,移除AND已有分支OR,如果AND剩余分支数大于0,则将新分支添加到AND,如果AND 移除后分支数为0,直接用新分支覆盖AND。如:(A OR D)AND(A OR D) AND A简化为A。
如果上层是OR,将预新添加的分支添加到OR时,逐个取出OR已有分支。
a)如果新分支与OR已有分支满足上述转换规则1,抛弃预新添加的分支。如:A ORB OR A,简化为A OR B。
b)如果新分支AND与OR已有的分支满足上述转换规则5,抛弃预新添加的分支。如:(A OR B)OR(A AND D)依公式3转换为A OR B OR(A AND D),依据转换规则5简化为A OR B。
c)如果新分支与OR已有的分支AND满足上述转换规则5,移除OR已有分支AND,如果OR剩余分支数大于0,则将新分支添加到OR,如果OR移除后分支数为0,直接用新分支覆盖OR。如:(A AND D)OR(A AND D) OR A简化为A。
逻辑运算的规则转换灵活运用了公式5、6、7和8,初步简化了逻辑运算。同时,逻辑运算经过规则转换后,逻辑运算AND和OR的两个特点:一、AND的分支只包括其它种类的查询条件或者逻辑运算符OR;二、OR的分支只包括其它种类的查询条件或者逻辑运算符AND。基于以上两个特点,按照第二预设规则初步简化的SQL查询条件表达式可以更简单有效地运用第一预设规则的公式1 和2。
步骤230、确认所述原始SQL查询条件表达式中不存在满足所述第一预设规则时,将等价转换后的SQL查询条件表达式作为所述目标SQL查询条件表达式。
其中,将按照第二预设规则初步简化的SQL查询条件表达式继续按照第一预设规则进一步简化,确认所述原始SQL查询条件表达式中不存在满足所述第一预设规则时,将等价转换后的SQL查询条件表达式作为所述目标SQL查询条件表达式。
一实施例中,对逻辑运算进行语义解析时,逐个取出逻辑运算的分支,只有分支都解析过了才解析当前逻辑运算符,因此逻辑运算语义的递归解析方法也类似后根遍历。如:逻辑运算(A AND B)OR(C AND A)的语法树结构如图5 所示,语义解析顺序也为A->B->AND->C->A->AND->OR。
逻辑运算从下至上递归进行语义解析过程中,会结合公式1和2进行简化。简化后的查询条件会直接覆盖上层运算符关联的两个分支,简化后的查询条件再参与上层逻辑运算符的解析,如果仍满足简化公式,则进一步简化。简化过程中如果满足语法解析的规则转换,语义解析也会结合规则转换进行简化。
如:逻辑运算((A AND B)OR(C AND A))AND B的语法树结构如图8所示。
从下至上解析过程中,在解析到OR之前都没有满足的公式,解析到OR时满足公式1,则简化为如图9所示。
简化后发现AND的上层仍是AND,则依据语法解析的转换规则2进行转换后的语法树结构如图10所示。
简化后的逻辑运算在解析AND时满足转换规则4,依据公式8简化为如图 11所示。
逻辑运算语义解析时,AND和OR查找和提取相同查询条件的规则基本相同,区别仅在于AND运用公式2,而OR运用公式1。下面以OR分支的查找和提取相同查询条件为例说明,具体操作步骤如下:
(1)、假设OR分支的个数N,指针数组BEXP_ARR[N]分别对应OR各分支。
指针数组GROUP_ARR[N]表示各组相同的查询条件,初值均为空。如:SELECT *FROMT WHERE T.C1=1 OR C1=1 OR C2=2 OR 2=C2。其中T.C1=1和 C1=1是相同的查询条件,C2=2和2=C2也是相同的查询条件。
下面步骤将N个分支根据相同的查询条件进行分组,最多为N组。假设当前正在处理的组数序号为GROUP_NO,GROUP_NO初值为0,GROUP_NO有效值范围为[0,N-1]。各个分组的相同的查询条件存储到GROUP_ARR[GROUP_NO]中,一个GROUP_ARR[GROUP_NO]存储一个查询条件。
标识数组FLAG_ARR[N]初值均为-1,表示BEXP_ARR各元素分别属于哪组,有效值范围为[0,N-1]。假设当前正在处理的OR分支序号为SEQ_NO,SEQ_NO 初值为0,SEQ_NO取值为[0,N-1]。
(2)、取出第SEQ_NO个OR分支,设置FLAG_ARR[SEQ_NO]=GROUP_NO。
(3)、判断是否存在相同查询条件的具体步骤。
a)设置用于比较的查询条件CMP_BEXP。
如果BEXP_ARR[SEQ_NO]不为AND,将BEXP_ARR[SEQ_NO]整体作为用于比较的查询条件CMP_BEXP。
如果BEXP_ARR[SEQ_NO]为AND,逐个取出BEXP_ARR[SEQ_NO]的分支作为用于比较的查询条件CMP_BEXP,直到匹配到相同的查询条件或者已经匹配过 BEXP_ARR[SEQ_NO]各个分支。
b)逐个遍历标识数组FLAG_ARR。
如果元素值不为-1,则跳过当前元素,表示OR的该分支已经匹配过且确认分组。
如果元素值为-1,跳转到c)。
c)假设当前正在匹配的分支序号为MATCH_NO。
如果BEXP_ARR[MATCH_NO]不为AND:
如果BEXP_ARR[MATCH_NO]与CMP_BEXP相同,设置FLAG_ARR[MATCH_NO]=GROUP_NO且GROUP_ARR[GROUP_NO]=CMP_BEXP。
如果BEXP_ARR[MATCH_NO]为AND:
依次取出BEXP_ARR[MATCH_NO]分支与CMP_BEXP比较,直到匹配到相同的查询条件或者已经匹配过BEXP_ARR[MATCH_NO]各个分支。如果存在分支与 CMP_BEXP相同,设置FLAG_ARR[MATCH_NO]=GROUP_NO且 GROUP_ARR[GROUP_NO]=CMP_BEXP。
(4)、组数GROUP_NO加1。
(5)、查找FLAG_ARR中元素值为-1的序号作为新SEQ_NO,跳转到(2) 继续执行,直到FLAG_ARR的所有值都非-1。
如:A OR(B AND D)OR(B AND G)OR(D AND E)对应的
BEXP_ARR为{A,B AND D,B AND G,D AND E}
经过查找和提取相同查询条件之后,对应的
FLAG_ARR为{0,1,1,2}
GROUP_ARR为={NULL,B,NULL},其中NULL表示空,表示第0组、第2组中没有相同的查询条件,第1组中有相同查询条件“B”。
从FLAG_ARR可以发现,由于语义解析顺序(B AND D)与(B AND G)分为同一组,而DAND E自成一组。
(6)、GROUP_NO记为N_GROUP。如果为N_GROUP=N,表示没有相同的查询条件,提前结束。
(7)、提取相同查询条件的具体步骤。
a)GROUP_NO从0开始,逐个取出GROUP_ARR[GROUP_NO]中的相同查询条件 CMP_BEXP,直到GROUP_NO为N_GROUP为止。
如果CMP_BEXP为空,表示GROUP_NO没有同组的分支,跳过当前元素 GROUP_NO加1。
如果CMP_BEXP不为空,跳转到b)。
b)SEQ_NO从0开始,逐个取出FLAG_ARR[SEQ_NO]=GROUP_NO的查询条件 BEXP_ARR[SEQ_NO]。
c)将同组多个SEQ_NO对应的查询条件BEXP_ARR依据公式1进行简化,同组简化后查询条件作为整体添加到OR分支。
(8)、检查依据公式1简化后的逻辑运算是否满足语法解析的规则转换,若满足,则进一步简化。
如:(B OR E)AND((B AND C)OR(B AND D))
依据公式1简化后为:
(B OR E)AND(B AND(C OR D))
再依据转换规则2进一步简化为:
(B OR E)AND B AND(C OR D)
再依据转换规则5进一步简化为:
B AND(C OR D)。
(9)、检查当前已经简化过的查询条件类型。
a)如果仍是逻辑运算OR
跳转到(1)继续执行,直到没有可以提取的相同查询条件为止。
b)如果是逻辑运算AND
逐个取出AND分支,如果AND分支存在OR,继续跳到(1)检查分支OR。
如:(A AND B AND C)OR(A AND B AND D)OR(A AND B AND E)
第一次简化为:
A AND((B AND C)OR(B AND D)OR(B AND E))
第二次递归简化为:
A AND B AND(C OR D OR E)
第三次递归没有相同查询条件提前结束。
c)如果是其它类型的查询条件:
已经无法简化,结束。
以上所述是OR分支的查找和提取相同查询条件的步骤,递归执行结束后如果查询条件类型为AND,则跳转到AND分支查找和提取相同查询条件。
本实施例的技术方案,先按照公式5-8的转换规则进行语法解析以简化原始SQL查询条件表达式,然后再按照公式1-4的等价转换将简化后的SQL查询条件表达式进一步转换,当SQL查询条件表达式不存在满足第一预设规则时,将简化后的SQL查询条件表达式作为目标SQL查询条件表达式。该方法对待处理的SQL语句表达式进行循序渐进的简化,同时第二预设规则和第一预设规则交叉使用,从而实现最优的等价转换。
图3是本发明实施例提供的一种逻辑运算的处理装置的结构示意图,该装置适用于执行本发明任意实施例提供的逻辑运算的处理方法,如图3所示,该装置包括:获取语句模块301、处理语句模块302和结果语句执行模块303。
获取语句模块301,用于获取原始SQL查询条件表达式;
处理语句模块302,用于将所述原始SQL查询条件表达式按照第一预设规则等价转换生成目标SQL查询条件表达式;
结果语句执行模块303,用于存储或执行包含所述目标SQL查询条件表达式的SQL语句。
本实施例提供的逻辑运算的处理装置,获取原始SQL查询条件表达式,将原始SQL查询条件表达式按照第一预设规则等价转换生成目标SQL查询条件表达式,然后存储或执行包含该目标SQL查询条件表达式的SQL语句。实现通过提取出相同的查询条件表达式来简化SQL语句中的逻辑运算表达式,以提高数据检索效率。
在上述实施例的基础上,所述第一预设规则包括等价转换前的第一预设 SQL查询条件表达式和等价转换后的第二预设SQL查询条件表达式。
在上述实施例的基础上,所述获取语句模块301包括:
对SQL语句采用后根遍历递归解析,生成所述原始SQL查询条件表达式。
在上述实施例的基础上,所述处理语句模块302包括:
等价转换模块,用于在解析过程中,遍历所述原始SQL查询条件表达式,将所述原始SQL查询条件表达式中满足第一预设规则的查询条件表达式进行等价转换为所述目标SQL查询条件表达式;
目标表达式确认模块,用于确认所述原始SQL查询条件表达式中不存在满足所述第一预设规则时,将等价转换后的SQL查询条件表达式作为所述目标SQL 查询条件表达式。
在上述实施例的基础上,等价转换模块包括:
在解析过程中,遍历所述原始SQL查询条件表达式,并按照第二预设规则简化所述原始SQL查询条件表达式;
将简化后的所述原始SQL查询条件表达式按照所述第一预设规则等价转换生成所述目标SQL查询条件表达式。
在上述实施例的基础上,所述第一预设规则中的SQL查询条件表达式包括父运算符和由父运算符关联的两个或多个分支,所述父运算符为逻辑运算符AND 或OR中的一种;所述分支为第一查询条件表达式或多个所述第一查询条件表达式通过逻辑运算符AND或OR连接的第二查询条件表达式中的一种,其中,所述第一查询条件表达式为逻辑比较运算表达式、范围确定运算表达式、集合设定运算表达式、字符匹配运算表达式以及空值中的一种。
在上述实施例的基础上,按照所述第二预设规则简化后的SQL查询条件表达式,其中,
逻辑运算符AND的分支为所述第一查询条件表达式或多个所述第一查询条件表达式通过逻辑运算符OR连接的第二查询条件表达式中的一种;
逻辑运算符OR的分支为第一查询条件表达式或多个所述第一查询条件表达式通过逻辑运算符AND连接的第二查询条件表达式中的一种。
在上述实施例的基础上,所述第一预设规则包括:
(A AND B)OR(A AND C)=A AND(B OR C);
(A OR B)AND(A OR C)=A OR(B AND C);
(A AND B)OR(A AND C)…OR(A AND Z)=A AND(B OR C…OR Z);
(A OR B)AND(A OR C)…AND(A OR Z)=A OR(B AND C…AND Z);
其中,A、B、C…Z为所述第一查询条件表达式,或者所述第二查询条件表达式中的一种,AND和OR为逻辑运算符。
在上述实施例的基础上,所述第二预设规则包括:
A OR A=A;
A AND A=A;
(A AND B)OR A=A;
(A OR B)AND A=A;
其中,A、B为所述第一查询条件表达式,或者所述第二查询条件表达式中的一种,AND和OR为逻辑运算符。
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明所有实施例提供的逻辑运算的处理方法:也即,该程序被处理器执行时实现:获取原始SQL查询条件表达式,将原始SQL 查询条件表达式按照第一预设规则等价转换生成目标SQL查询条件表达式,然后存储或执行包含该目标SQL查询条件表达式的SQL语句。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、 Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网 (WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
图4是本发明实施例提供的一种转换插件的结构示意图,该转换插件可集成本发明实施例提供的逻辑运算的处理装置。参见图4,转换插件400可以包括:存储器401,处理器402及存储在存储器401上并可在处理器402运行的计算机程序,所述处理器402执行所述计算机程序时实现如本发明实施例所述的逻辑运算的处理方法。
本发明实施例提供的转换插件,获取原始SQL查询条件表达式,将原始SQL 查询条件表达式按照第一预设规则等价转换生成目标SQL查询条件表达式,然后存储或执行包含该目标SQL查询条件表达式的SQL语句。实现通过提取出相同的查询条件表达式来简化SQL语句中的逻辑运算表达式,以提高数据检索效率。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (12)

1.一种逻辑运算的处理方法,其特征在于,包括:
获取原始SQL查询条件表达式;
将所述原始SQL查询条件表达式按照第一预设规则等价转换生成目标SQL查询条件表达式;
存储或执行包含所述目标SQL查询条件表达式的SQL语句。
2.根据权利要求1所述的方法,其特征在于,所述第一预设规则包括等价转换前的第一预设SQL查询条件表达式和等价转换后的第二预设SQL查询条件表达式。
3.根据权利要求1所述的方法,其特征在于,获取原始SQL查询条件表达式,包括:
对SQL语句采用后根遍历递归解析,生成所述原始SQL查询条件表达式。
4.根据权利要求3所述的方法,其特征在于,将所述原始SQL查询条件表达式按照第一预设规则等价转换生成目标SQL查询条件表达式,包括:
在解析过程中,遍历所述原始SQL查询条件表达式,将所述原始SQL查询条件表达式中满足第一预设规则的查询条件表达式进行等价转换为所述目标SQL查询条件表达式;
确认所述原始SQL查询条件表达式中不存在满足所述第一预设规则时,将等价转换后的SQL查询条件表达式作为所述目标SQL查询条件表达式。
5.根据权利要求4所述的方法,其特征在于,在解析过程中,遍历所述原始SQL查询条件表达式,将所述原始SQL查询条件表达式中满足第一预设规则的查询条件表达式进行等价转换为所述目标SQL查询条件表达式,还包括:
在解析过程中,遍历所述原始SQL查询条件表达式,并按照第二预设规则简化所述原始SQL查询条件表达式;
将简化后的所述原始SQL查询条件表达式按照所述第一预设规则等价转换生成所述目标SQL查询条件表达式。
6.根据权利要求2所述的方法,其特征在于,所述第一预设规则中的SQL查询条件表达式包括父运算符和由父运算符关联的两个或多个分支,所述父运算符为逻辑运算符AND或OR中的一种;所述分支为第一查询条件表达式或多个所述第一查询条件表达式通过逻辑运算符AND或OR连接的第二查询条件表达式中的一种,其中,所述第一查询条件表达式为逻辑比较运算表达式、范围确定运算表达式、集合设定运算表达式、字符匹配运算表达式以及空值中的一种。
7.根据权利要求5所述的方法,其特征在于,按照所述第二预设规则简化后的SQL查询条件表达式,其中,
逻辑运算符AND的分支为所述第一查询条件表达式或多个所述第一查询条件表达式通过逻辑运算符OR连接的第二查询条件表达式中的一种;
逻辑运算符OR的分支为第一查询条件表达式或多个所述第一查询条件表达式通过逻辑运算符AND连接的第二查询条件表达式中的一种。
8.根据权利要求2所述的方法,其特征在于,所述第一预设规则包括:
(A AND B)OR(A AND C)=A AND(B OR C);
(A OR B)AND(A OR C)=A OR(B AND C);
(A AND B)OR(A AND C)…OR(A AND Z)=A AND(B OR C…OR Z);
(A OR B)AND(A OR C)…AND(A OR Z)=A OR(B AND C…AND Z);
其中,A、B、C…Z为所述第一查询条件表达式,或者所述第二查询条件表达式中的一种,AND和OR为逻辑运算符。
9.根据权利要求5所述的方法,其特征在于,所述第二预设规则包括:
A OR A=A;
A AND A=A;
(A AND B)OR A=A;
(A OR B)AND A=A;
其中,A、B为所述第一查询条件表达式,或者所述第二查询条件表达式中的一种,AND和OR为逻辑运算符。
10.一种逻辑运算的处理装置,其特征在于,包括:
获取语句模块,用于获取原始SQL查询条件表达式;
处理语句模块,用于将所述原始SQL查询条件表达式按照第一预设规则等价转换生成目标SQL查询条件表达式;
结果语句执行模块,用于存储或执行包含所述目标SQL查询条件表达式的SQL语句。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-9中任一所述的逻辑运算的处理方法。
12.一种转换插件,其特征在于,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-9中任一所述的逻辑运算的处理方法。
CN201811133260.0A 2018-09-27 2018-09-27 一种逻辑运算的处理方法、装置、转换插件及存储介质 Active CN109308300B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811133260.0A CN109308300B (zh) 2018-09-27 2018-09-27 一种逻辑运算的处理方法、装置、转换插件及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811133260.0A CN109308300B (zh) 2018-09-27 2018-09-27 一种逻辑运算的处理方法、装置、转换插件及存储介质

Publications (2)

Publication Number Publication Date
CN109308300A true CN109308300A (zh) 2019-02-05
CN109308300B CN109308300B (zh) 2021-11-12

Family

ID=65224175

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811133260.0A Active CN109308300B (zh) 2018-09-27 2018-09-27 一种逻辑运算的处理方法、装置、转换插件及存储介质

Country Status (1)

Country Link
CN (1) CN109308300B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109947804A (zh) * 2019-03-20 2019-06-28 上海达梦数据库有限公司 数据集合查询的优化方法、装置、服务器和存储介质
CN110020720A (zh) * 2019-04-01 2019-07-16 北京中科寒武纪科技有限公司 算子拼接方法及装置
CN110032574A (zh) * 2019-03-07 2019-07-19 北京东方国信科技股份有限公司 Sql语句的处理方法及装置
CN110164216A (zh) * 2019-05-23 2019-08-23 福建工程学院 一种sql在线评测系统
CN113157720A (zh) * 2020-01-23 2021-07-23 阿里巴巴集团控股有限公司 查询语句的处理方法、装置、设备及介质
CN115271514A (zh) * 2022-08-11 2022-11-01 中国铁塔股份有限公司 通讯企业的监控方法、装置、电子设备及存储介质

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101021874A (zh) * 2007-03-21 2007-08-22 金蝶软件(中国)有限公司 一种对查询sql请求进行优化的方法及装置
CN101984439A (zh) * 2010-12-09 2011-03-09 上海市共进通信技术有限公司 基于子查询实现数据源xml查询系统优化的方法
JP4754021B1 (ja) * 2010-03-19 2011-08-24 株式会社エクサ データベース変換システム
CN103020252A (zh) * 2012-12-20 2013-04-03 武汉大学 一种基于需求特征关联的遥感影像需求融合方法
CN103761387A (zh) * 2014-01-20 2014-04-30 华侨大学 一种fpga组合逻辑系统顺序规范的形式化验证方法
CN104123288A (zh) * 2013-04-24 2014-10-29 阿里巴巴集团控股有限公司 一种数据查询方法及装置
CN105608713A (zh) * 2016-01-04 2016-05-25 湖南大学 一种基于四叉树的二值图像编码与高效逻辑运算方法
CN105955999A (zh) * 2016-04-20 2016-09-21 华中科技大学 一种大规模RDF图的ThetaJoin查询处理方法
US20170091267A1 (en) * 2015-06-15 2017-03-30 International Business Machines Corporation Traversing a sparql query and translation to a semantic equivalent sql
CN106708838A (zh) * 2015-11-12 2017-05-24 华为技术有限公司 用于流数据查询的方法和装置
CN106708954A (zh) * 2016-11-29 2017-05-24 北京华胜信泰数据技术有限公司 非标准sql语句的内外连接的转化方法和转化装置
CN107193898A (zh) * 2017-05-09 2017-09-22 中国科学院计算技术研究所 基于分级复用的日志数据流的查询共享方法和系统
CN107766381A (zh) * 2016-08-22 2018-03-06 北京京东尚科信息技术有限公司 数据查询方法、系统及电子设备
US20180203899A1 (en) * 2017-01-18 2018-07-19 DataScience, Inc. Expression pushdown optimization system
CN108304505A (zh) * 2018-01-18 2018-07-20 上海达梦数据库有限公司 一种sql语句的处理方法、装置、服务器及存储介质
CN108446289A (zh) * 2017-09-26 2018-08-24 北京中安智达科技有限公司 一种支持异构数据库的数据检索方法

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101021874A (zh) * 2007-03-21 2007-08-22 金蝶软件(中国)有限公司 一种对查询sql请求进行优化的方法及装置
JP4754021B1 (ja) * 2010-03-19 2011-08-24 株式会社エクサ データベース変換システム
CN101984439A (zh) * 2010-12-09 2011-03-09 上海市共进通信技术有限公司 基于子查询实现数据源xml查询系统优化的方法
CN103020252A (zh) * 2012-12-20 2013-04-03 武汉大学 一种基于需求特征关联的遥感影像需求融合方法
CN104123288A (zh) * 2013-04-24 2014-10-29 阿里巴巴集团控股有限公司 一种数据查询方法及装置
CN103761387A (zh) * 2014-01-20 2014-04-30 华侨大学 一种fpga组合逻辑系统顺序规范的形式化验证方法
US20170091267A1 (en) * 2015-06-15 2017-03-30 International Business Machines Corporation Traversing a sparql query and translation to a semantic equivalent sql
CN106708838A (zh) * 2015-11-12 2017-05-24 华为技术有限公司 用于流数据查询的方法和装置
CN105608713A (zh) * 2016-01-04 2016-05-25 湖南大学 一种基于四叉树的二值图像编码与高效逻辑运算方法
CN105955999A (zh) * 2016-04-20 2016-09-21 华中科技大学 一种大规模RDF图的ThetaJoin查询处理方法
CN107766381A (zh) * 2016-08-22 2018-03-06 北京京东尚科信息技术有限公司 数据查询方法、系统及电子设备
CN106708954A (zh) * 2016-11-29 2017-05-24 北京华胜信泰数据技术有限公司 非标准sql语句的内外连接的转化方法和转化装置
US20180203899A1 (en) * 2017-01-18 2018-07-19 DataScience, Inc. Expression pushdown optimization system
CN107193898A (zh) * 2017-05-09 2017-09-22 中国科学院计算技术研究所 基于分级复用的日志数据流的查询共享方法和系统
CN108446289A (zh) * 2017-09-26 2018-08-24 北京中安智达科技有限公司 一种支持异构数据库的数据检索方法
CN108304505A (zh) * 2018-01-18 2018-07-20 上海达梦数据库有限公司 一种sql语句的处理方法、装置、服务器及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MOHIT DUA 等: "Hindi Language Graphical User Interface to Database Management System", 《 2013 12TH INTERNATIONAL CONFERENCE ON MACHINE LEARNING AND APPLICATIONS》 *
陈龙猛: "关系数据语言上的语义等价关系", 《微计算机信息》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110032574A (zh) * 2019-03-07 2019-07-19 北京东方国信科技股份有限公司 Sql语句的处理方法及装置
CN110032574B (zh) * 2019-03-07 2021-02-02 北京东方国信科技股份有限公司 Sql语句的处理方法及装置
CN109947804A (zh) * 2019-03-20 2019-06-28 上海达梦数据库有限公司 数据集合查询的优化方法、装置、服务器和存储介质
CN109947804B (zh) * 2019-03-20 2021-04-06 上海达梦数据库有限公司 数据集合查询的优化方法、装置、服务器和存储介质
CN110020720A (zh) * 2019-04-01 2019-07-16 北京中科寒武纪科技有限公司 算子拼接方法及装置
CN110164216A (zh) * 2019-05-23 2019-08-23 福建工程学院 一种sql在线评测系统
CN113157720A (zh) * 2020-01-23 2021-07-23 阿里巴巴集团控股有限公司 查询语句的处理方法、装置、设备及介质
CN115271514A (zh) * 2022-08-11 2022-11-01 中国铁塔股份有限公司 通讯企业的监控方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN109308300B (zh) 2021-11-12

Similar Documents

Publication Publication Date Title
CN109308300A (zh) 一种逻辑运算的处理方法、装置、转换插件及存储介质
Visser Intelligent information integration for the Semantic Web
CN102301324B (zh) 使用矢量字段处理数据
CN103197948B (zh) 一种电力智能设备通信规约脚本解析方法
CN107798069A (zh) 用于数据加载的方法、装置及计算机可读介质
CN104268428A (zh) 一种用于指标计算的可视化配置方法
CN104899314A (zh) 一种数据仓库的血统分析方法和装置
CN102955697B (zh) 基于面向方面的构件库构建方法
CN105718593A (zh) 一种数据库查询优化方法及系统
CN107247799A (zh) 兼容多种大数据存储的数据处理方法、系统及其建模方法
CN105808746A (zh) 一种基于Hadoop体系的关系型大数据无缝接入方法及系统
Santodomingo et al. Facilitating the automatic mapping of IEC 61850 signals and CIM measurements
CN108763323B (zh) 基于资源集和大数据技术的气象格点文件应用方法
CN106484740B (zh) 一种数据表连接方法及装置
Xiao et al. Integration of heterogeneous agriculture information system based on interoperation of domain ontology
CN108959294A (zh) 一种访问搜索引擎的方法和装置
CN106354633A (zh) 基于算法插件的任务调度表生成方法
CN109726213A (zh) 一种程序代码转换方法、装置、介质和计算设备
CN111221860A (zh) 基于大数据的混合查询优化方法及装置
CN114791882A (zh) 变量命名冲突解决方法和装置、电子设备、存储介质
CN117609341B (zh) 一种电网的数字孪生系统
CN111597202A (zh) 一种基于分形理论的战场态势信息按需提取方法及装置
Yue et al. Semantics-enabled metadata generation, tracking and validation in geospatial web service composition for mining distributed images
Li et al. Intelligent Java Dataset Construction and Visualization Evaluation for Reliable Software Development
Avazpour et al. V for variety: Lessons learned from complex smart cities data harmonization and integration

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant