CN110222071B - 一种数据查询方法、装置、服务器及存储介质 - Google Patents
一种数据查询方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN110222071B CN110222071B CN201910492644.XA CN201910492644A CN110222071B CN 110222071 B CN110222071 B CN 110222071B CN 201910492644 A CN201910492644 A CN 201910492644A CN 110222071 B CN110222071 B CN 110222071B
- Authority
- CN
- China
- Prior art keywords
- data
- query
- parameter
- target
- query statement
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/244—Grouping and aggregation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2448—Query languages for particular applications; for extensibility, e.g. user defined types
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据查询方法、装置、服务器及存储介质。数据查询方法,包括:获取用于数据查询的查询语句;当查询语句不满足设定表达规则时,转换查询语句获得目标查询语句;根据目标查询语句进行数据查询。实现自动将不符合分组查询使用规则的错误查询语句转换为正确的表达式,并返回转换后的分组数据查询结果,扩展了分组查询使用场景,降低了查询语句编写规则。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种数据查询方法、装置、服务器及存储介质。
背景技术
结构化查询语言(Structured Query Language,SQL)是一种数据库查询和程序设计语言,可以用于数据的存取、查询、更新和管理关系数据库系统,被广泛应用到各个领域。
SQL语句中的GROUP BY子句用来按照指定的分组项对查询结果进行分组,但是目前在实际应用中,无法保证SQL语句各结构表达式都满足GROUPBY子句分组项的使用规则,当不符合使用规则时,自动报错:“不是GROUP BY表达式”,并需要管理人员进行检查后更正SQL语句,并检查改写后SQL语句的正确性和等价性,实际应用程序中包含大量SQL语句,且SQL语句逻辑复杂,逐条检查SQL语句的合法性代价太大,流程过于复杂和繁琐。而且,在实际应用场景中,用户可能想在SQL查询语句中使用非GROUP BY子句表达式,却被规则限制而不支持。
发明内容
本发明提供一种数据查询方法、装置、服务器及存储介质,以实现自动将不符合SQL语句中GROUP BY分组查询使用规则的错误表达式转换为正确的表达式,并返回转换后的分组数据结果。
第一方面,本发明实施例提供了一种数据查询方法,包括:
获取用于数据查询的查询语句;
当所述查询语句不满足设定表达规则时,转换所述查询语句获得目标查询语句;
根据所述目标查询语句进行数据查询。
第二方面,本发明实施例还提供了一种数据查询装置,包括:
查询语句获取模块,用于获取用于数据查询的查询语句;
目标语句获取模块,用于当所述查询语句不满足设定表达规则时,转换所述查询语句获得目标查询语句;
数据查询模块,用于根据所述目标查询语句进行数据查询。
第三方面,本发明实施例还提供了一种服务器,所述服务器包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例提供的数据查询方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现如本发明任意实施例提供的数据查询方法。
本发明实施例通过获取用于数据查询的查询语句;当所述查询语句不满足设定表达规则时,转换所述查询语句获得目标查询语句;根据所述目标查询语句进行数据查询。实现自动将不符合分组查询使用规则的错误查询语句转换为正确的表达式,并返回转换后的分组数据查询结果,扩展了分组查询使用场景,降低了查询语句编写规则。
附图说明
图1是本发明实施例一中的一种数据查询方法的流程图;
图2是本发明实施例二中的一种数据查询方法的流程图;
图3是本发明实施例三中的一种数据查询装置的结构示意图;
图4是本发明实施例四中的一种服务器的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种数据查询方法的流程图,本实施例可适用于对SQL语句进行分组查询的情况,该方法可以由本实施例提供的数据查询装置来执行,该装置可采用软件和/或硬件的方式实现。参见图1,该方法具体包括如下步骤:
步骤110、获取用于数据查询的查询语句。
对于数据查询,离不开结构化查询语言(Structured Query Language,SQL),它是一种查询能力极强的语言,对于关系数据库(oracle、db2、sqlserver、sybase、mysql等)中的数据,通过SQL的标准语法都可以查找出来。
可选的,查询语句可以是SQL语言中的SELECT查询项子句。SELECT查询项子句可以基于数据表的特定列进行数据提取,并将提取后的结果存储在一个结果集中。而对于数据表中庞杂的数据,通常会应用限定条件进行分组,以便系统仅对满足条件的组返回结果。其中,还可以通过使用GROUP BY分组子句进行分组查询。
在此基础上,获取用于数据查询的查询语句的方式可以为:用户输入SQL语句,获取用户输入的SQL语句,并对SQL语句进行语法分析,例如,可以对SQL语句分段,并逐段对SQL语句进行分析。
可选的,用户输入的查询语句,可以是在SQL语句中位于SELECT查询项子句后除了特定关键字外,用逗号隔开的各项中包含GROUP BY分组子句的分组查询语句。该分组查询语句可以通过语法解析器对输入的SQL语句进行解析得到。
步骤120、当查询语句不满足设定表达规则时,转换查询语句获得目标查询语句。
设定表达规则为SQL语句通用的语法规则。可选的,该设定表达规则可以为:查询语句中包含分组子句,且查询语句中属于子句集合的各目标子句的操作对象与分组子句的分组对象相同。
在上述实施例的基础上,查询语句可以为包含GROUP BY分组子句的分组查询语句。另外,该分组查询语句还包含各目标子句,各目标子句构成了子句集合。其中,子句集合中至少包括下述一种:查询项子句、筛选子句和排序子句。查询项子句可以为SELECT查询项子句,用于按照该分组进行数据查询;筛选子句可以为HAVING筛选子句,用于筛选满足条件的组,排序子句可以为ORDER BY排序子句,用于按照一定规则对组内数据进行排序。可选的,该分组查询语句还可以包含聚集函数,聚集函数可以是COUNT、SUM、MIN、MAX、AVG、STDDEV等。
进一步地,当分组查询语句中的各目标子句的操作对象与分组子句的分组对象不同时,则分组查询语句不满足设定表达规则时,需要将查询语句进行转换以获得目标查询语句。
例如,假设数据表TEST包含两列ID INT和PID INT,执行下列分组查询语句SELECTID,PID FROM TEST GROUP BY PID。可见,该分组查询语句的子句集合仅包括SELECT查询项子句。即目标子句为“SELECT ID,PID”,其中目标子句的操作对象“ID”与GROUP BY分组子句的分组对象“PID”不同,则需要将查询语句进行转换以获得目标查询语句。
进一步地,若查询语句不满足设定表达规则,则查询语句不能返回数据查询结果,进行报错。此时,通过设定聚集函数,将不满足设定表达规则的查询语句进行转换,以获得能够通过检查的目标查询语句。其中,设定聚集函数是预先编写好的,可以AGGR_NEW(EXP),其中,EXP表示参数列表,共包含四个参数,作为设定聚集函数的入口参数,当获取四个入口参数后,即可获取对应的目标查询语句。
可选的,转换查询语句获得目标查询语句,可以通过先获取查询语句中属于子句集合的各目标子句,并确定各目标子句的操作对象;然后将各操作对象分别作为所设定聚集函数的第一参数值,形成对应各操作对象的待调用函数;进而将各待调用函数替换查询语句中相应的操作对象,获得目标查询语句。其中,对应各操作对象的待调用函数中还包括预先配置有参数值的第二参数、第三参数以及第四参数。
具体的,可以通过语法分析器对查询语句进行语法分析,以获得查询语句中各目标子句,同时确定各目标子句的操作对象。提取不同于分组子句分组对象的各操作对象作为所设定聚集函数的第一参数值,第一参数值至少包括一个操作对象。进而,根据用户需求,由用户设置设定聚集函数中的第二参数、第三参数以及第四参数,获取设定聚集函数的四个入口参数后,形成对应各操作对象的待调用函数;最后将各待调用函数替换相应的不同于分组子句分组对象的操作对象,作为目标查询语句。
其中,第二参数用于指定返回组内对应数据表中操作对象列的数据的行号,当第二参数为空时,表示返回组内对应操作对象列的数据的第一行;第三参数用于确定按数据表正向或反向查找第二参数中的行号,当第三参数为空时,表示数据表正向查找第二参数中的行号;第四参数用于确定是否跳过操作对象列对应的目标数据中的NULL值,当第四参数为空时,表示不跳过分组对象列对应的NULL值组。第二参数、第三参数和第四参数的默认值均为空。
在上述实施例的基础上,设定聚集函数为AGGR_NEW(EXP),以分组查询语句:SELECT ID,PID FROM TEST GROUP BY PID为例。其中SELECT查询项子句的操作对象“ID”与GROUP BY分组子句的分组对象“PID”不同,则将“ID”作为设定聚集函数AGGR_NEW(EXP)入口参数的第一参数值,可以设置第二参数、第三参数以及第四参数均为默认值。则获得目标查询语句为SELECT AGGR_NEW(ID),PID FROM TEST GROUP BY PID。
可选的,若多个目标子句的操作对象均不同于分组子句分组对象,则将多个目标子句的操作对象同时作为所设定聚集函数的第一参数值。例如,分组查询语句为:SELECTID,PID FROM TEST GROUP BY PID HAVING(ID>1)ORDER BY ID;该分组查询语句的子句集合包括SELECT查询项子句、HAVING筛选子句和ORDER BY排序子句。即目标子句分别为“SELECT ID,PID”、“HAVING(ID>1)”和“ORDER BY ID”,三个目标子句的操作对象“ID”,与GROUP BY分组子句的分组对象“PID”不同,则将“ID”作为设定聚集函数AGGR_NEW(EXP)入口参数的第一参数值,可以设置第二参数、第三参数以及第四参数均为默认值。则获得目标查询语句为SELECT AGGR_NEW(ID),PID FROM TEST GROUP BY PID HAVING(AGGR_NEW(ID)>1)ORDER BY AGGR_NEW(ID)。
步骤130、根据目标查询语句进行数据查询。
根据待调用函数,即可返回按照分组对象分组后对应设定聚集函数第二参数指定行的数据集。进而根据目标查询语句对返回的数据集进行数据查询后,得到数据查询结果。
本发明实施例通过获取用于数据查询的查询语句;当所述查询语句不满足设定表达规则时,转换所述查询语句获得目标查询语句;根据所述目标查询语句进行数据查询。实现自动将不符合分组查询使用规则的错误查询语句转换为正确的表达式,并返回转换后的分组数据查询结果,扩展了分组查询使用场景,降低了查询语句编写规则。
实施例二
在上述实施例的基础上,对根据目标查询语句进行数据查询的步骤进行进一步细化,如图2所示,图2是本发明实施例二中的一种数据查询方法的流程图,具体包括如下步骤:
步骤1302、基于目标查询语句,确定进行数据查询的目标数据表;
可选的通过语法分析器对目标查询语句进行解析后得到对应的目标数据表。
在上述实施例的基础上,以目标查询语句:SELECT AGGR_NEW(ID),PID FROM TESTGROUP BY PID,为例。经语法分析器分析后得到,对应的目标数据表为TEST。
步骤1304、从目标数据表提取分组对象以及各第一参数值所对应表项的列数据,获得第一数据表。
具体的,从目标数据表提取GROUP BY分组子句对应的分组对象的列数据,以及待调用函数中各第一参数值对应表项的列数据,所提取的数据构成第一数据表。其中,第一数据表中包含各待调用函数返回的第一数据。
例如,目标数据表为:
CREATE TABLE TEST(ID INT,PID INT);
INSERT INTO TEST VALUES(1,NULL);
INSERT INTO TEST VALUES(2,1);
INSERT INTO TEST VALUES(3,1);
INSERT INTO TEST VALUES(5,2);
INSERT INTO TEST VALUES(6,3);
INSERT INTO TEST VALUES(4,2);
在上述实施例的基础上,例如,目标查询语句为:
SELECT AGGR_NEW(ID),PID FROM TEST GROUP BY PID HAVING(AGGR_NEW(ID)>1)ORDER BY AGGR_NEW(ID);
则从TEST目标数据表中提取GROUP BY分组子句对应的分组对象的列数据为:NULL,1,1,2,3,2。
提取待调用函数AGGR_NEW(ID)中各第一参数值对应表项ID的列数据为:1,2,3,5,6,4。
则对应的第一数据表,如表1所示。其中,表1中的ID列数据和PID列数据为待调用函数AGGR_NEW(ID)返回的第一数据。
表1第一数据表
步骤1306、对第一数据表按照分组对象的列数据排序并分组,形成第二数据表。
针对上述第一数据表,对分组对象PID的列数据进行排序并分组,形成第二数据表,如表2。具体的,在排序时,可以对PID的列数据按照由小到大的顺序进行排序;排序后,进行分组,通过比较分组对象列数据,数据一致的则为一组,从表2中可看出,共分为四组。其中,表2中的ID列数据和PID列数据为待调用函数AGGR_NEW(ID)返回的第二数据。
表2第二数据表
步骤1308、根据各待调用函数中第二参数、第三参数以及第四参数的参数值处理第二数据表,获得第三数据表。
可选的,第二参数可以由用户设置为返回组内对应操作对象列的数据的行号值,第二参数默认值为空,即表示返回组内对应操作对象列数据的第一行数据。第三参数可以由用户设置为0或1,当第三参数为0时,代表在第二数据表内正向查找第二参数对应的行号值;当第三参数为1时,代表在第二数据表内反向查找第二参数对应的行号值;第三参数的默认值为空,与第三参数为0时所代表的意义相同。第四参数可以由用户设置为0或1,当第四参数为0时,表示不跳过分组对象列对应的NULL值组;当第四参数为1时,表示跳过分组对象列对应的NULL值组;第四参数的默认值为空,与第四参数为0时所代表的意义相同。
在上述实施例的基础上,待调用函数为AGGR_NEW(ID),则第二参数、第三参数以及第四参数的参数值均为默认值。结合表2,表2显示将分组对象PID列数据分为四组,分别为:“NULL”组、“1”组、“2”组和“3”组,分别对PID列数据中的每一组对应的ID列数据都进行参数化处理,具体过程为:以“1”组为例,首先第四参数为默认值,代表不跳过PID列数据对应的“NULL”组,“1”不是NULL值,对“1”组对应的表2中ID列数据继续进行参数化处理。进而确定出“1”组对应的表2中ID列数据的第一行数据为“2”以及第二行数据为“3”,并根据第二参数和第三参数均为默认值,代表在“1”组对应的ID列数据内正向查找第一行数据为“2”,并将其返回。同理,针对分组后的另外三组:“NULL”组、“2”组和“3”组,采取与“1”组相同的方法对其对应的ID列数据进行参数化处理后,并返回对应组的ID列的行数据。各组以及对应各组的ID列的行数据构成第三数据表,如表3所示。其中,表3中的ID列数据和PID列数据为待调用函数AGGR_NEW(ID)返回的第三数据。
表3第三数据表
步骤1310、根据目标查询语句处理第三数据表,并将获得的第四数据表作为数据查询结果。
具体的,根据目标查询语句,对第三数据表进行常规的数据查询处理,得到第四数据表,将第四数据表作为数据查询结果进行返回。
在上述实施例的基础上,基于目标查询语句:SELECT AGGR_NEW(ID),PID FROMTEST GROUP BY PID HAVING(AGGR_NEW(ID)>1)ORDER BY AGGR_NEW(ID),对第三数据表进行数据查询,其中HAVING筛选子句操作对象为(AGGR_NEW(ID)>1),对第三数据表中ID列数据进行ID>1的条件筛选;同时,ORDER BY排序子句操作对象为AGGR_NEW(ID),即按照ID列数据进行排序,最终得到第四数据表,如表4所示,将第四数据表作为数据查询结果进行返回。
表4第四数据表
本发明实施例先根据目标查询语句中的待调用函数,返回按照分组对象分组后对应待调用函数指定行的数据集。进而根据目标查询语句对返回的数据集进行数据查询后,得到数据查询结果。实现了根据错误查询语句自动转换后的正确表达式,返回转换后的分组数据查询结果,扩展了分组查询使用场景,降低了查询语句编写规则。
实施例三
图3为本发明实施例三提供的一种数据查询装置的结构示意图,如图3所示,该装置包括:
查询语句获取模块310,用于获取用于数据查询的查询语句;
目标语句获取模块320,用于当查询语句不满足设定表达规则时,转换查询语句获得目标查询语句;
数据查询模块330,用于根据目标查询语句进行数据查询。
本发明实施例通过获取用于数据查询的查询语句;当所述查询语句不满足设定表达规则时,转换所述查询语句获得目标查询语句;根据所述目标查询语句进行数据查询。实现自动将不符合分组查询使用规则的错误查询语句转换为正确的表达式,并返回转换后的分组数据查询结果,扩展了分组查询使用场景,降低了查询语句编写规则。
可选的,设定表达规则为:
查询语句中包含分组子句,且查询语句中属于子句集合的各目标子句的操作对象与分组子句的分组对象相同;其中,子句集合中至少包括下述一种:查询项子句、筛选子句和排序子句。
可选的,目标语句获取模块320,具体用于:
获取查询语句中属于子句集合的各目标子句,并确定各目标子句的操作对象;
将各操作对象分别作为所设定聚集函数的第一参数值,形成对应各操作对象的待调用函数;
采用各待调用函数替换查询语句中相应的操作对象,获得目标查询语句;
其中,对应各操作对象对应的待调用函数中还包括预先配置有参数值的第二参数、第三参数以及第四参数。
可选的,数据查询模块330,具体用于:
基于目标查询语句,确定进行数据查询的目标数据表;
从目标数据表提取分组对象以及各第一参数值所对应表项的列数据,获得第一数据表,其中,第一数据表中包含各待调用函数返回的第一数据;
对第一数据表按照分组对象的列数据排序并分组,形成第二数据表,其中,第二数据表中包含各待调用函数返回的第二数据;
根据各待调用函数中第二参数、第三参数以及第四参数的参数值处理第二数据表,获得第三数据表,其中,第三数据表中包含各待调用函数返回的第三数据;
根据目标查询语句处理第三数据表,并将获得的第四数据表作为数据查询结果。
本发明实施例所提供的数据查询装置可执行本发明任意实施例所提供的数据查询方法,具备执行方法相应的功能模块和有益效果。
实施例四
图4为本发明实施例三提供的一种服务器的结构示意图。图4示出了适于用来实现本发明实施方式的示例性服务器12的框图。图4显示的服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,该服务器12以通用计算设备的形式表现。该服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明实施例中的功能和/或方法。
服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备交互的设备通信,和/或与使得该服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的数据查询方法。
实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种数据查询方法,该方法包括:
获取用于数据查询的查询语句;
当所述查询语句不满足设定表达规则时,转换所述查询语句获得目标查询语句;
根据所述目标查询语句进行数据查询。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据查询方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (4)
1.一种数据查询方法,其特征在于,包括:
获取用于数据查询的查询语句;
当所述查询语句不满足设定表达规则时,转换所述查询语句获得目标查询语句;
根据所述目标查询语句进行数据查询;
其中,所述设定表达规则为:
所述查询语句中包含分组子句,且所述查询语句中属于子句集合的各目标子句的操作对象与所述分组子句的分组对象相同,所述子句集合中至少包括下述一种:查询项子句、筛选子句和排序子句;
其中,所述转换所述查询语句获得目标查询语句,包括:
获取所述查询语句中属于所述子句集合的各目标子句,并确定各所述目标子句的操作对象;
将各所述操作对象分别作为所设定聚集函数的第一参数值,形成对应各所述操作对象的待调用函数;
采用各所述待调用函数替换所述查询语句中相应的操作对象,获得目标查询语句;
对应各所述操作对象对应的待调用函数中还包括预先配置有参数值的第二参数、第三参数以及第四参数;其中,所述第二参数用于指定返回数据表中操作对象的数据的行号;所述第三参数用于确定按数据表正向或反向查找所述第二参数中的行号;所述第四参数用于确定是否跳过操作对象对应的目标数据中的NULL空值;所述根据所述目标查询语句进行数据查询,包括:
基于所述目标查询语句,确定进行数据查询的目标数据表;
从所述目标数据表提取所述分组对象以及各第一参数值所对应表项的列数据,获得第一数据表,其中,所述第一数据表中包含各待调用函数返回的第一数据;
对所述第一数据表按照所述分组对象的列数据排序并分组,形成第二数据表,其中,所述第二数据表中包含各待调用函数返回的第二数据;
根据各所述待调用函数中第二参数、第三参数以及第四参数的参数值处理所述第二数据表,获得第三数据表,其中,所述第三数据表中包含各待调用函数返回的第三数据;
根据所述目标查询语句处理所述第三数据表,并将获得的第四数据表作为数据查询结果。
2.一种数据查询装置,其特征在于,包括:
查询语句获取模块,用于获取用于数据查询的查询语句;
目标语句获取模块,用于当所述查询语句不满足设定表达规则时,转换所述查询语句获得目标查询语句;
数据查询模块,用于根据所述目标查询语句进行数据查询;
其中,所述设定表达规则为:
所述查询语句中包含分组子句,且所述查询语句中属于子句集合的各目标子句的操作对象与所述分组子句的分组对象相同,所述子句集合中至少包括下述一种:查询项子句、筛选子句和排序子句;
所述目标语句获取模块,具体用于:
获取所述查询语句中属于所述子句集合的各目标子句,并确定各所述目标子句的操作对象;
将各所述操作对象分别作为所设定聚集函数的第一参数值,形成对应各所述操作对象的待调用函数;
采用各所述待调用函数替换所述查询语句中相应的操作对象,获得目标查询语句;
对应各所述操作对象对应的待调用函数中还包括预先配置有参数值的第二参数、第三参数以及第四参数;其中,所述第二参数用于指定返回数据表中操作对象的数据的行号;所述第三参数用于确定按数据表正向或反向查找所述第二参数中的行号;所述第四参数用于确定是否跳过操作对象对应的目标数据中的NULL空值;
所述数据查询模块,具体用于:
基于所述目标查询语句,确定进行数据查询的目标数据表;
从所述目标数据表提取所述分组对象以及各第一参数值所对应表项的列数据,获得第一数据表,其中,所述第一数据表中包含各待调用函数返回的第一数据;
对所述第一数据表按照所述分组对象的列数据排序并分组,形成第二数据表,其中,所述第二数据表中包含各待调用函数返回的第二数据;
根据各所述待调用函数中第二参数、第三参数以及第四参数的参数值处理所述第二数据表,获得第三数据表,其中,所述第三数据表中包含各待调用函数返回的第三数据;
根据所述目标查询语句处理所述第三数据表,并将获得的第四数据表作为数据查询结果。
3.一种服务器,其特征在于,所述服务器包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1所述的数据查询方法。
4.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1所述的数据查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910492644.XA CN110222071B (zh) | 2019-06-06 | 2019-06-06 | 一种数据查询方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910492644.XA CN110222071B (zh) | 2019-06-06 | 2019-06-06 | 一种数据查询方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110222071A CN110222071A (zh) | 2019-09-10 |
CN110222071B true CN110222071B (zh) | 2021-11-02 |
Family
ID=67816033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910492644.XA Active CN110222071B (zh) | 2019-06-06 | 2019-06-06 | 一种数据查询方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110222071B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111291299B (zh) * | 2020-01-22 | 2023-08-15 | 北京飞漫软件技术有限公司 | 一种直接获取本地命令执行结果的方法及本地服务器 |
CN111309765B (zh) * | 2020-01-22 | 2023-07-04 | 北京飞漫软件技术有限公司 | 一种直接查询结构化数据的方法及装置 |
CN112100207B (zh) * | 2020-09-07 | 2024-02-23 | 上海达梦数据库有限公司 | 一种子查询处理方法、装置、设备及存储介质 |
CN112231560B (zh) * | 2020-10-14 | 2024-03-15 | 中国民航信息网络股份有限公司 | 航班信息查询方法、装置、设备及可读存储介质 |
CN113535756B (zh) * | 2021-07-30 | 2023-05-30 | 上海达梦数据库有限公司 | 数据查询方法、装置、设备及存储介质 |
CN114064740B (zh) * | 2022-01-17 | 2022-05-13 | 通联支付网络服务股份有限公司 | 用于查询数据的方法、设备和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140581A (zh) * | 2007-05-24 | 2008-03-12 | 中兴通讯股份有限公司 | 预处理特殊字符的sql语句构造方法和装置 |
CN104391995A (zh) * | 2014-12-15 | 2015-03-04 | 北京趣拿软件科技有限公司 | 一种sql语句审核的方法、数据库运维的方法及系统 |
CN106055582A (zh) * | 2016-05-20 | 2016-10-26 | 中国农业银行股份有限公司 | 一种替换数据库的表名的方法及装置 |
CN108255703A (zh) * | 2017-11-07 | 2018-07-06 | 中国平安人寿保险股份有限公司 | 一种sql脚本的故障修复方法及其终端 |
CN109408540A (zh) * | 2018-08-24 | 2019-03-01 | 周宁 | 一种可视化sql查询系统及方法 |
CN109753513A (zh) * | 2018-12-19 | 2019-05-14 | 国网新疆电力有限公司电力科学研究院 | 一种基于正则表达式匹配的输变配台帐核查方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050027690A1 (en) * | 2003-07-29 | 2005-02-03 | International Business Machines Corporation | Dynamic selection of optimal grouping sequence at runtime for grouping sets, rollup and cube operations in SQL query processing |
CN104765731B (zh) * | 2014-01-02 | 2018-05-18 | 国际商业机器公司 | 数据库查询优化方法和设备 |
CN104391923A (zh) * | 2014-11-20 | 2015-03-04 | 北京锐安科技有限公司 | 一种查询数据集的方法及装置 |
CN107798026A (zh) * | 2016-09-05 | 2018-03-13 | 北京京东尚科信息技术有限公司 | 数据查询方法和装置 |
CN108304505B (zh) * | 2018-01-18 | 2020-09-11 | 上海达梦数据库有限公司 | 一种sql语句的处理方法、装置、服务器及存储介质 |
CN108628975B (zh) * | 2018-04-25 | 2020-08-21 | 上海达梦数据库有限公司 | 一种数据库sql语句优化方法及装置 |
-
2019
- 2019-06-06 CN CN201910492644.XA patent/CN110222071B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140581A (zh) * | 2007-05-24 | 2008-03-12 | 中兴通讯股份有限公司 | 预处理特殊字符的sql语句构造方法和装置 |
CN104391995A (zh) * | 2014-12-15 | 2015-03-04 | 北京趣拿软件科技有限公司 | 一种sql语句审核的方法、数据库运维的方法及系统 |
CN106055582A (zh) * | 2016-05-20 | 2016-10-26 | 中国农业银行股份有限公司 | 一种替换数据库的表名的方法及装置 |
CN108255703A (zh) * | 2017-11-07 | 2018-07-06 | 中国平安人寿保险股份有限公司 | 一种sql脚本的故障修复方法及其终端 |
CN109408540A (zh) * | 2018-08-24 | 2019-03-01 | 周宁 | 一种可视化sql查询系统及方法 |
CN109753513A (zh) * | 2018-12-19 | 2019-05-14 | 国网新疆电力有限公司电力科学研究院 | 一种基于正则表达式匹配的输变配台帐核查方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110222071A (zh) | 2019-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110222071B (zh) | 一种数据查询方法、装置、服务器及存储介质 | |
US10133778B2 (en) | Query optimization using join cardinality | |
CN112559554B (zh) | 一种查询语句优化方法及装置 | |
US8412700B2 (en) | Database query optimization using index carryover to subset an index | |
US8086593B2 (en) | Dynamic filters for relational query processing | |
CN110795455A (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
US8046352B2 (en) | Expression replacement in virtual columns | |
CN112988782B (zh) | Hive支持交互式查询的方法、装置及存储介质 | |
TWI706260B (zh) | 基於行動端NoSQL資料庫的索引建立方法及裝置 | |
CN110019384B (zh) | 一种血缘数据的获取方法、提供血缘数据的方法及装置 | |
CN110688544A (zh) | 一种查询数据库的方法、设备及存储介质 | |
CN109947804B (zh) | 数据集合查询的优化方法、装置、服务器和存储介质 | |
US11288266B2 (en) | Candidate projection enumeration based query response generation | |
US20140379753A1 (en) | Ambiguous queries in configuration management databases | |
US7085760B2 (en) | Data query differential analysis | |
US11934361B2 (en) | Automatic generation of a data model from a structured query language (SQL) statement | |
CN113918605A (zh) | 数据查询方法、装置、设备以及计算机存储介质 | |
US11163766B2 (en) | Unique key lookup with additional filter | |
US8805811B2 (en) | Executing user-defined function on a plurality of database tuples | |
CN110874366A (zh) | 数据处理、查询方法和装置 | |
CN111078728B (zh) | 一种数据库归档模式下跨库查询方法和装置 | |
CN114490724B (zh) | 处理数据库查询语句的方法和装置 | |
US9378229B1 (en) | Index selection based on a compressed workload | |
CN110895529B (zh) | 结构化查询语言的处理方法及相关装置 | |
US20240193135A1 (en) | Systems, methods, and media for accessing derivative properties from a post relational database utilizing a logical schema instruction that includes a base object identifier |
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 |