CN111090671A - 消除数据库中空字符串和无效字符串差异的方法和装置 - Google Patents
消除数据库中空字符串和无效字符串差异的方法和装置 Download PDFInfo
- Publication number
- CN111090671A CN111090671A CN201911318802.6A CN201911318802A CN111090671A CN 111090671 A CN111090671 A CN 111090671A CN 201911318802 A CN201911318802 A CN 201911318802A CN 111090671 A CN111090671 A CN 111090671A
- Authority
- CN
- China
- Prior art keywords
- character string
- credible
- character
- database
- character type
- 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
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/245—Query processing
- G06F16/2452—Query translation
- G06F16/24522—Translation of natural language queries to structured queries
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种消除数据库中空字符串和无效字符串差异的方法和装置,从数据库的数据字典中获取业务表中所有字符类型列;根据可信标志记录表校验业务表中所有字符类型列是否全部设置可信标志,如果是则结束步骤;如果不是,则对未设置可信标志的字符类型列数据进行全表扫描,检测空字符串是否存在;如果存在空字符串,将空字符串更新为无效字符串,否则设置业务表及相关视图中字符类型列的可信标志,记录到可信标志记录表中;从可信标志记录表中获取业务表的字符类型列的可信标志,根据字符类型列的可信标志对标准的数据库语句进行重新编译,得到数据库原生结构化查询语言。
Description
技术领域
本公开属于数据库数据处理技术领域,涉及一种消除数据库中空字符串和无效字符串差异的方法和装置。
背景技术
本部分的陈述仅仅是提供了与本公开相关的背景技术信息,不必然构成在先技术。
当前,数据库种类多样,各种应用程序使用数据库也有了更多的选择,但是不同的数据库之间是有差异的,包括数据库函数、关键字等。如果定义并使用标准的数据库语法,并将标准的数据库语句再翻译成各数据库原生的结构化查询语言(sql)去执行,就能摆脱使用一个数据库就必须学习一个数据库语法的困境。
然而,oracle数据库与其它数据库关于空字符串(即”)和无效字符串(即null)的不同处理为这种方式带来了困难。oracle数据库默认空字符串为null,而在其他数据库中空字符串与null是不同的、可以共存的。这种差异会导致无法保证翻译后的sql在oracle数据库与其他数据库上的运行结果一致,造成结果错误,给后期处理带来很多的不便。
发明内容
本公开为了解决上述问题,提出了一种消除数据库中空字符串和无效字符串差异的方法和装置,本公开能够消除数据库中空字符串和无效字符串之间的差异,保证翻译后的sql在oracle数据库和其它数据库的运行结果一致。
根据一些实施例,本公开采用如下技术方案:
一种消除数据库中空字符串和无效字符串差异的方法,包括以下步骤:
从数据库的数据字典中获取业务表中所有字符类型列;
根据可信标志记录表校验业务表中所有字符类型列是否全部设置可信标志,如果是则结束步骤;如果不是,则对未设置可信标志的字符类型列数据进行全表扫描,检测空字符串是否存在;
如果存在空字符串,将空字符串更新为无效字符串,否则设置业务表及相关视图中字符类型列的可信标志,记录到可信标志记录表中;
从可信标志记录表中获取业务表的字符类型列的可信标志,根据字符类型列的可信标志对标准的数据库语句进行重新编译,得到数据库原生结构化查询语言。
作为可选择的实施方式,如果业务表中所有字符类型列已经全部设置可信标志,则表示之前已经进行过空字符串查杀,直接结束。
作为可选择的实施方式,将标准的数据库语句解析成语法树,通过语法树获取标准的数据库语句中涉及到的业务表或视图,再从可信标志记录表中获取业务表或视图的字符类型列的可信标志。
作为可选择的实施方式,根据字符类型列的可信标志对标准的数据库语句进行重新编译,得到数据库原生结构化查询语言的编译方式为:对标准的数据库语句中的字符类型列,若该列未设置可信标志,则需要对列进行转换,对一些返回结果可能为空字符串的函数,则需要对函数表达式进行转换。
一种消除数据库中空字符串和无效字符串差异的装置,包括:
空字符串查杀模块,被配置为对所有业务表进行空字符串查杀,设置业务表及相关视图中字符类型列的可信标志;
Sql处理模块,被配置为根据标准的数据库语句中涉及的字符类型列的可信标志对标准的数据库语句进行重新编译。
作为可选择的实施方式,所述空字符串查杀模块具体包括:
数据获取模块,被配置为从数据库的数据字典中获取业务表中所有字符类型列;
可信标志确认模块,被配置为根据可信标志记录表校验业务表中所有字符类型列是否全部设置可信标志;
空字符串查找模块,被配置为当业务表中存在未设置可信标志的字符类型列时,对未设置可信标志的字符类型列数据进行全表扫描,检测空字符串是否存在;
空字符串更新模块,被配置为当数据中存在空字符串时,对空字符串数据处理,更新为无效字符串;
可信标志添加模块,被配置为在已经判断业务表中不会存在空字符串数据后,设置业务表及相关视图中字符类型列的可信标志,记录到可信标志记录表中。
作为可选择的实施方式,Sql处理模块包括:
解析模块,被配置为将标准的数据库语句解析成语法树;
可信标志获取模块,被配置为通过语法树获取标准的数据库语句中涉及到的业务表或视图,再从可信标志记录表中获取业务表或视图的字符类型列的可信标志;
编译模块,被配置为根据字符类型列的可信标志对标准的数据库语句进行重新编译,得到数据库原生sql。
一种计算机可读存储介质,其中存储有多条指令,所述指令适于由终端设备的处理器加载并执行所述的一种消除数据库中空字符串和无效字符串差异的方法的步骤。
一种终端设备,包括处理器和计算机可读存储介质,处理器用于实现各指令;计算机可读存储介质用于存储多条指令,所述指令适于由处理器加载并执行所述的一种消除数据库中空字符串和无效字符串差异的方法的步骤。
与现有技术相比,本公开的有益效果为:
本公开能够有效的消除数据库中空字符串和无效字符串之间的差异,保证翻译后的sql在oracle数据库和其它数据库的运行结果一致。
附图说明
构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。
图1为消除数据库中空字符串和null差异装置的功能模块示意图。
图2为中空字符串查杀模块101的流程示意图。
图3为Sql处理模块102的流程示意图。
具体实施方式:
下面结合附图与实施例对本公开作进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
如图1所示,一种不同数据库中空字符串差异消除方法包含两个功能模块:
空字符串查杀模块101,用于对所有业务表进行空字符串查杀,设置业务表及相关视图中字符类型列的可信标志。
Sql处理模块102,用于根据标准的数据库语句中涉及的字符类型列的可信标志对标准的数据库语句进行重新编译。
空字符串查杀模块101的流程示意图,如图2:
步骤1011:可以从数据库的数据字典中获取业务表中所有字符类型列。
步骤1012:根据可信标志记录表校验业务表中所有字符类型列是否全部设置可信标志。如果业务表中所有字符类型列已经全部设置可信标志,则表示之前已经进行过空字符串查杀,直接结束;如果业务表中存在未设置可信标志的字符类型列,则转向1013步骤进行处理。
步骤1013:当业务表中存在未设置可信标志的字符类型列时,对未设置可信标志的字符类型列数据进行全表扫描,检测空字符串是否存在。如果数据中存在空字符串,则转向1014步骤进行处理;如果数据中不存在空字符串,则转向1014步骤进行处理。
步骤1014:当数据中存在空字符串时,对空字符串数据处理,更新为null。
步骤1015:在已经判断业务表中不会存在空字符串数据后,设置业务表及相关视图中字符类型列的可信标志,记录到可信标志记录表中。
Sql处理模块102的流程示意图,如图2:
步骤1021:将标准的数据库语句解析成语法树。
步骤1022:通过语法树获取标准的数据库语句中涉及到的业务表(或视图),再从可信标志记录表中获取业务表(或视图)的字符类型列的可信标志。
步骤1023:根据字符类型列的可信标志对标准的数据库语句进行重新编译,得到数据库原生sql。其中编译方式:对标准的数据库语句中的字符类型列,若该列未设置可信标志,则需要对列进行转换(即空字符串转换成null:casewhen列=″then null else列end);对一些返回结果可能为空字符串的函数,则需要对函数表达式进行转换(即空字符串转换成null:case when函数表达式=″then null else函数表达式end)。
本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
上述虽然结合附图对本公开的具体实施方式进行了描述,但并非对本公开保护范围的限制,所属领域技术人员应该明白,在本公开的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本公开的保护范围以内。
Claims (9)
1.一种消除数据库中空字符串和无效字符串差异的方法,其特征是:包括以下步骤:
从数据库的数据字典中获取业务表中所有字符类型列;
根据可信标志记录表校验业务表中所有字符类型列是否全部设置可信标志,如果是则结束步骤;如果不是,则对未设置可信标志的字符类型列数据进行全表扫描,检测空字符串是否存在;
如果存在空字符串,将空字符串更新为无效字符串,否则设置业务表及相关视图中字符类型列的可信标志,记录到可信标志记录表中;
从可信标志记录表中获取业务表的字符类型列的可信标志,根据字符类型列的可信标志对标准的数据库语句进行重新编译,得到数据库原生结构化查询语言。
2.如权利要求1所述的一种消除数据库中空字符串和无效字符串差异的方法,其特征是:如果业务表中所有字符类型列已经全部设置可信标志,则表示之前已经进行过空字符串查杀,直接结束。
3.如权利要求1所述的一种消除数据库中空字符串和无效字符串差异的方法,其特征是:将标准的数据库语句解析成语法树,通过语法树获取标准的数据库语句中涉及到的业务表或视图,再从可信标志记录表中获取业务表或视图的字符类型列的可信标志。
4.如权利要求1所述的一种消除数据库中空字符串和无效字符串差异的方法,其特征是:根据字符类型列的可信标志对标准的数据库语句进行重新编译,得到数据库原生结构化查询语言的编译方式为:对标准的数据库语句中的字符类型列,若该列未设置可信标志,则需要对列进行转换,对一些返回结果可能为空字符串的函数,则需要对函数表达式进行转换。
5.一种消除数据库中空字符串和无效字符串差异的装置,其特征是:包括:
空字符串查杀模块,被配置为对所有业务表进行空字符串查杀,设置业务表及相关视图中字符类型列的可信标志;
Sql处理模块,被配置为根据标准的数据库语句中涉及的字符类型列的可信标志对标准的数据库语句进行重新编译。
6.如权利要求5所述的一种消除数据库中空字符串和无效字符串差异的装置,其特征是:所述空字符串查杀模块具体包括:
数据获取模块,被配置为从数据库的数据字典中获取业务表中所有字符类型列;
可信标志确认模块,被配置为根据可信标志记录表校验业务表中所有字符类型列是否全部设置可信标志;
空字符串查找模块,被配置为当业务表中存在未设置可信标志的字符类型列时,对未设置可信标志的字符类型列数据进行全表扫描,检测空字符串是否存在;
空字符串更新模块,被配置为当数据中存在空字符串时,对空字符串数据处理,更新为无效字符串;
可信标志添加模块,被配置为在已经判断业务表中不会存在空字符串数据后,设置业务表及相关视图中字符类型列的可信标志,记录到可信标志记录表中。
7.如权利要求5所述的一种消除数据库中空字符串和无效字符串差异的装置,其特征是:Sql处理模块包括:
解析模块,被配置为将标准的数据库语句解析成语法树;
可信标志获取模块,被配置为通过语法树获取标准的数据库语句中涉及到的业务表或视图,再从可信标志记录表中获取业务表或视图的字符类型列的可信标志;
编译模块,被配置为根据字符类型列的可信标志对标准的数据库语句进行重新编译,得到数据库原生sql。
8.一种计算机可读存储介质,其特征是:其中存储有多条指令,所述指令适于由终端设备的处理器加载并执行权利要求1-4中任一项所述的一种消除数据库中空字符串和无效字符串差异的方法的步骤。
9.一种终端设备,其特征是:包括处理器和计算机可读存储介质,处理器用于实现各指令;计算机可读存储介质用于存储多条指令,所述指令适于由处理器加载并执行权利要求1-4中任一项所述的一种消除数据库中空字符串和无效字符串差异的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911318802.6A CN111090671B (zh) | 2019-12-19 | 2019-12-19 | 消除数据库中空字符串和无效字符串差异的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911318802.6A CN111090671B (zh) | 2019-12-19 | 2019-12-19 | 消除数据库中空字符串和无效字符串差异的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111090671A true CN111090671A (zh) | 2020-05-01 |
CN111090671B CN111090671B (zh) | 2023-06-23 |
Family
ID=70395763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911318802.6A Active CN111090671B (zh) | 2019-12-19 | 2019-12-19 | 消除数据库中空字符串和无效字符串差异的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111090671B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294598A (zh) * | 2013-05-28 | 2013-09-11 | 华为技术有限公司 | 一种源代码检查方法及装置 |
CN103646195A (zh) * | 2013-11-27 | 2014-03-19 | 南京师范大学 | 一种面向版权保护的数据库水印方法 |
CN103902139A (zh) * | 2012-12-26 | 2014-07-02 | 联想(北京)有限公司 | 一种字符输入方法及装置 |
CN104391923A (zh) * | 2014-11-20 | 2015-03-04 | 北京锐安科技有限公司 | 一种查询数据集的方法及装置 |
CN105574090A (zh) * | 2015-12-10 | 2016-05-11 | 北京中科汇联科技股份有限公司 | 一种敏感词过滤方法及系统 |
CN106445795A (zh) * | 2016-09-26 | 2017-02-22 | 中国工商银行股份有限公司 | 一种数据库sql效率检测方法及装置 |
CN106681979A (zh) * | 2016-11-23 | 2017-05-17 | 广州阿里巴巴文学信息技术有限公司 | 文章排版方法、设备、可编程设备及文章发布平台 |
CN107741926A (zh) * | 2012-10-22 | 2018-02-27 | 谷歌有限责任公司 | 用于文本输入的空格预测 |
CN109981185A (zh) * | 2018-11-29 | 2019-07-05 | 招商银行股份有限公司 | 数据发送和接收方法、装置及计算机可读存储介质 |
CN110427773A (zh) * | 2019-06-28 | 2019-11-08 | 平安科技(深圳)有限公司 | 信息处理方法、装置、存储介质及终端设备 |
-
2019
- 2019-12-19 CN CN201911318802.6A patent/CN111090671B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107741926A (zh) * | 2012-10-22 | 2018-02-27 | 谷歌有限责任公司 | 用于文本输入的空格预测 |
CN103902139A (zh) * | 2012-12-26 | 2014-07-02 | 联想(北京)有限公司 | 一种字符输入方法及装置 |
CN103294598A (zh) * | 2013-05-28 | 2013-09-11 | 华为技术有限公司 | 一种源代码检查方法及装置 |
CN103646195A (zh) * | 2013-11-27 | 2014-03-19 | 南京师范大学 | 一种面向版权保护的数据库水印方法 |
CN104391923A (zh) * | 2014-11-20 | 2015-03-04 | 北京锐安科技有限公司 | 一种查询数据集的方法及装置 |
CN105574090A (zh) * | 2015-12-10 | 2016-05-11 | 北京中科汇联科技股份有限公司 | 一种敏感词过滤方法及系统 |
CN106445795A (zh) * | 2016-09-26 | 2017-02-22 | 中国工商银行股份有限公司 | 一种数据库sql效率检测方法及装置 |
CN106681979A (zh) * | 2016-11-23 | 2017-05-17 | 广州阿里巴巴文学信息技术有限公司 | 文章排版方法、设备、可编程设备及文章发布平台 |
CN109981185A (zh) * | 2018-11-29 | 2019-07-05 | 招商银行股份有限公司 | 数据发送和接收方法、装置及计算机可读存储介质 |
CN110427773A (zh) * | 2019-06-28 | 2019-11-08 | 平安科技(深圳)有限公司 | 信息处理方法、装置、存储介质及终端设备 |
Non-Patent Citations (1)
Title |
---|
闫中敏: "Deep Web数据获取问题研究", 中国博士学位论文全文数据库 信息科技辑, no. 2011, pages 15 * |
Also Published As
Publication number | Publication date |
---|---|
CN111090671B (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111061757B (zh) | 数据库的语言转换方法、装置、电子设备及存储介质 | |
CN111782265B (zh) | 基于字段级血缘关系的软件资源系统及其建立方法 | |
US9122540B2 (en) | Transformation of computer programs and eliminating errors | |
CN110019384B (zh) | 一种血缘数据的获取方法、提供血缘数据的方法及装置 | |
CN108710662B (zh) | 语言转换方法和装置、存储介质、数据查询系统和方法 | |
CN114090613A (zh) | 程序语句转换方法、装置、设备及存储介质 | |
CN112579466B (zh) | 测试用例的生成方法、装置及计算机可读存储介质 | |
CN112015722A (zh) | 数据库管理方法、数据血缘分析方法以及相关装置 | |
CN110909126A (zh) | 一种信息查询方法及装置 | |
CN116450616A (zh) | 一种基于解析树的通用异构关系型数据库sql迁移方法 | |
CN116226170A (zh) | 一种数据库语句转换方法、装置、电子设备及存储介质 | |
CN114116856A (zh) | 基于数据治理全链路的字段级血缘关系分析方法 | |
US20150193213A1 (en) | Computer Implemented System and Method for Checking a Program Code | |
CN115840589A (zh) | 一种支持异构分布式数据库的发布方法 | |
WO2021259290A1 (zh) | 存储过程转换方法、装置、设备和存储介质 | |
CN108008947B (zh) | 一种编程语句的智能提示方法、装置、服务器及存储介质 | |
CN111078728B (zh) | 一种数据库归档模式下跨库查询方法和装置 | |
CN110580170B (zh) | 软件性能风险的识别方法及装置 | |
CN110633290A (zh) | 一种sql语句分析方法及分析装置 | |
CN111090671B (zh) | 消除数据库中空字符串和无效字符串差异的方法和装置 | |
CN115544062A (zh) | 基于Apache Calcite数据血缘和影响分析的方法及系统 | |
CN110147396B (zh) | 一种映射关系生成方法及装置 | |
CN111723104A (zh) | 一种数据处理系统中语法分析的方法、装置及系统 | |
CN115858561A (zh) | 统一sql的方法、系统、设备及介质 | |
CN106484706B (zh) | 用于分布式系统的执行过程化sql语句的方法和设备 |
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 |