消除数据库中空字符串和无效字符串差异的方法和装置制造方法及图纸

技术编号:24010575 阅读:30 留言:0更新日期:2020-05-02 01:36
本公开提供了一种消除数据库中空字符串和无效字符串差异的方法和装置,从数据库的数据字典中获取业务表中所有字符类型列;根据可信标志记录表校验业务表中所有字符类型列是否全部设置可信标志,如果是则结束步骤;如果不是,则对未设置可信标志的字符类型列数据进行全表扫描,检测空字符串是否存在;如果存在空字符串,将空字符串更新为无效字符串,否则设置业务表及相关视图中字符类型列的可信标志,记录到可信标志记录表中;从可信标志记录表中获取业务表的字符类型列的可信标志,根据字符类型列的可信标志对标准的数据库语句进行重新编译,得到数据库原生结构化查询语言。

Method and device to eliminate the difference between empty string and invalid string in database

【技术实现步骤摘要】
消除数据库中空字符串和无效字符串差异的方法和装置
本公开属于数据库数据处理
,涉及一种消除数据库中空字符串和无效字符串差异的方法和装置。
技术介绍
本部分的陈述仅仅是提供了与本公开相关的
技术介绍
信息,不必然构成在先技术。当前,数据库种类多样,各种应用程序使用数据库也有了更多的选择,但是不同的数据库之间是有差异的,包括数据库函数、关键字等。如果定义并使用标准的数据库语法,并将标准的数据库语句再翻译成各数据库原生的结构化查询语言(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:当数据中存在空字符串时,对空字符串数据处理,更新本文档来自技高网
...

【技术保护点】
1.一种消除数据库中空字符串和无效字符串差异的方法,其特征是:包括以下步骤:/n从数据库的数据字典中获取业务表中所有字符类型列;/n根据可信标志记录表校验业务表中所有字符类型列是否全部设置可信标志,如果是则结束步骤;如果不是,则对未设置可信标志的字符类型列数据进行全表扫描,检测空字符串是否存在;/n如果存在空字符串,将空字符串更新为无效字符串,否则设置业务表及相关视图中字符类型列的可信标志,记录到可信标志记录表中;/n从可信标志记录表中获取业务表的字符类型列的可信标志,根据字符类型列的可信标志对标准的数据库语句进行重新编译,得到数据库原生结构化查询语言。/n

【技术特征摘要】
1.一种消除数据库中空字符串和无效字符串差异的方法,其特征是:包括以下步骤:
从数据库的数据字典中获取业务表中所有字符类型列;
根据可信标志记录表校验业务表中所有字符类型列是否全部设置可信标志,如果是则结束步骤;如果不是,则对未设置可信标志的字符类型列数据进行全表扫描,检测空字符串是否存在;
如果存在空字符串,将空字符串更新为无效字符串,否则设置业务表及相关视图中字符类型列的可信标志,记录到可信标志记录表中;
从可信标志记录表中获取业务表的字符类型列的可信标志,根据字符类型列的可信标志对标准的数据库语句进行重新编译,得到数据库原生结构化查询语言。


2.如权利要求1所述的一种消除数据库中空字符串和无效字符串差异的方法,其特征是:如果业务表中所有字符类型列已经全部设置可信标志,则表示之前已经进行过空字符串查杀,直接结束。


3.如权利要求1所述的一种消除数据库中空字符串和无效字符串差异的方法,其特征是:将标准的数据库语句解析成语法树,通过语法树获取标准的数据库语句中涉及到的业务表或视图,再从可信标志记录表中获取业务表或视图的字符类型列的可信标志。


4.如权利要求1所述的一种消除数据库中空字符串和无效字符串差异的方法,其特征是:根据字符类型列的可信标志对标准的数据库语句进行重新编译,得到数据库原生结构化查询语言的编译方式为:对标准的数据库语句中的字符类型列,若该列未设置可信标志,则需要对列进行转换,对一些返回结果可能为空字符串的函数,则需要对函数表达式进行转换。


5.一种消除数据库中空字符串和无效字符串差异的装置,其特征是:包括:
空字符串查杀模块,被配置为对所有业务表进行空字符串查杀,设置业务表及相关视图中字符类型列的可信标志;
Sql处理模块,被配置为根据标准的数据库语句中涉及的字符类型...

【专利技术属性】
技术研发人员:赵永光朱晓洪于秋波宋喆闫中敏钱进王可可
申请(专利权)人:山大地纬软件股份有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1