一种字符型数据转换成数值型数据的方法和装置的制造方法
【技术领域】
[0001]本发明涉及web开发技术领域,特别的,涉及一种字符型数据转换成数值型数据的方法和装置。
【背景技术】
[0002]PHP(PHP:Hypertext Preprocessor,超文本预处理器)是一种通用开源脚本语言,吸收了 C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。
[0003]PHP语言中PDO组件返回的结果集中的数据均是字符型数据,如中文字符、英文字符、数字字符和其他ASC II字符等,不支持数值型数据,数值型数据是表示数量、可以进行数值运算的数据类型。PDO的数据获取方法与其他数据库扩展都非常类似,只要成功执行SELECT查询,都会有结果集对象产生。不管是使用PDO对象中的query O方法,还是使用prepare ()和execute O等方法结合的预处理语句,执行SELECT查询都会得到相同的结果集对象 F1DOStatement0
[0004]在返回结果集时,都需要通过F1DOStatement类对象中的方法将数据遍历出来。但由于PDO组件只返回字符型数据,字符型数据本身不具有计算能力,而后续对PDO组件返回的结果集数据进行处理时,需要区分数值型数据和字符型数据以便进行准确处理。因此,由于PDO组件无法直接返回数值型数据,给后续的结果集数据处理带来了不便。
[0005]综上所述,现有技术中,在对PHP语言中PDO组件返回结果集数据进行处理的过程中,由于PDO组件只返回无法进行计算的字符型数据,因此,缺少一种将字符型数据转化为数值型数据的方法。
【发明内容】
[0006]本发明提供一种字符型数据转换成数值型数据的方法和装置,用以将PHP语言中PDO组件返回的字符型数据转换成数值型数据,实现对PDO返回结果集进行计算的目的。
[0007]本发明提供一种字符型数据转换成数值型数据的方法,包括:
[0008]步骤A:获取PDO组件返回的包含字符型数据的结果集,记录所述结果集包含的全部数据记录的行数Al和全部字符型字段数BI ;
[0009]步骤B:自所述结果集中获取一行数据记录,所述一行数据记录包含多个字符型字段;
[0010]步骤C:获取数据库中存储的字符型字段与字段类型对应的信息列表,将所述多个字符型字段分别与所述信息列表进行匹配,获取所述多个字符型字段各自的类型信息;
[0011]步骤D:根据所述多个字符型字段的类型信息,调用相应的转换函数,将所述字符型字段转换成数值型字段。
[0012]本发明实施例的一些有益效果可以包括:
[0013]在PDO组件返回结果集之后,提取该结果集中的每一行数据记录,获取数据库中存储的字符型字段与字段类型对应的信息列表,将该数据记录中的字符型字段与该信息列表进行匹配,从而能够获得每个字符型字段的字段类型信息。根据获取的字段类型信息,调用相应的转换函数,即能够将字符型字段转换成可用于计算的数值型字段,因此,实现了字符型字段与数值型字段的区分,为后续的结果集运算提供了便利,避免了字符型字段不能参与运算带来的难题。
[0014]在一个实施例中,还包括:
[0015]步骤E:将转换后的数值型字段与其相对应的转换前的字符型字段组成转换列表;
[0016]步骤F:自所述结果集中获取下一行数据记录,检测所述数据记录中包含的字符型字段是否存在所述转换列表中;
[0017]步骤G:如果存在,则根据所述转换列表将字符型字段直接转换成相应的数值型字段,如果不存在,则重复所述步骤C和步骤D,将该字符型字段转换成数值型字段;
[0018]步骤H:将所述步骤G中的字符型字段与其对应的数值型字段加入所述转换列表中。
[0019]该实施例中,将已经转换过的字符型字段与其相对应的数值型字段建立一个转换列表,当下次再提取数据记录中的字符型字段进行转换时,可以判断该字符型字段是否存在该转换列表中,也即判断该字符型字段是否曾经被转换过。如果是,可以直接从转换列表中找出其相对应的数值型字段,而不必再次调用相应的转换函数进行转换,节省了转换时间,提高了转换效率;如果该字符型字段没有被转换过,在对其进行正常转换之后,将其与对应的数值型字段添加到转换列表中,可以为后续的字符型字段的转换提供快速、便捷的参考依据。
[0020]在一个实施例中,在所述步骤D之后还包括:
[0021]步骤1:统计已经转换成数值型字段的全部数据记录的行数A2,及全部字段的字段数B2 ;
[0022]步骤J:将所述A2、B2分别与所述A1、B1进行比较,如果二者均相同,则转换结束,如果A2 = Al且B2 # BI,则执行所述步骤C,如果A2 # Al且B2 = BI,则执行所述记录获取模块的操作。
[0023]该实施例中,将已经转换成数值型字段的全部数据记录的行数和全部字段的字段数,与PDO组件返回结果集中的全部数据记录的行数、全部字符型字段数进行分别比较,分别在二者相同、前者相同后者不同、前者不同后者相同的情况下,执行不同的流程,区分了不同转换进度时的操作流程,提高了工作效率。
[0024]在一个实施例中,所述获取数据库中存储的字符型字段与字段类型对应的信息列表包括:
[0025]获取当前数据库中的所有用户表,及所述各用户表的所有字符型字段,所述用户表为与用户相关的具体信息集合;
[0026]查询与各用户表相关的视图、存储过程、函数,及当前数据库中所有存储过程;
[0027]查询用户创建的所有数据库,及所述各用户表的字符型字段和字段类型;
[0028]根据获取的所述各用户表的字段和字段类型建立字符型字段与字段类型对应的信息列表。
[0029]该实施例中,对从数据库中获取存储的字符型字段与字段类型对应的信息列表进行了具体限定,先获取数据库中的所有用户表,根据用户表相关的视图、存储过程、函数,查询用户创建的所有数据库中用户表的字符型字段和字段类型,然后根据各用户表字符型字段和字段类型建立字符型字段与字段类型对应的信息列表,通过该方法,可快速地建立信息列表,为转换字符型字段提供了匹配依据。
[0030]在一个实施例中,所述根据所述多个字符型字段的类型信息,调用相应的转换函数,将所述字符型字段转换成数值型字段包括:
[0031]获取所述多个字符型字段的字段类型信息,判断该字段类型信息是否包括.或e或E其中任意一个字符;
[0032]如果包括,则将所述字符型字段当作float来求值,如果不包括则所述字符型字段的值由字符型字段最前面的部分决定,如果字符型字段以合法数字开始,则以该数字作为所述字符型字段的值,否则其值为0,所述合法数字由可选的正负号开始,后面跟着一个或多个数字。
[0033]该实施例中,对根据转化函数将字符型字段转换成数值型字段的过程进行了具体限定,通过判断字符型字段的字段类型信息是否包括.或e或E其中任意一个字符,分别执行不同的转换方式。该实施例中的方法为字符型字段转换成数值型字段提供了直接的转换方法,提高了