CN108536819B - 整型列与字符串比较的方法、装置、服务器及存储介质 - Google Patents
整型列与字符串比较的方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN108536819B CN108536819B CN201810307318.2A CN201810307318A CN108536819B CN 108536819 B CN108536819 B CN 108536819B CN 201810307318 A CN201810307318 A CN 201810307318A CN 108536819 B CN108536819 B CN 108536819B
- Authority
- CN
- China
- Prior art keywords
- value
- character string
- label
- equal
- operator
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种整型列与字符串比较的方法、装置、服务器及存储介质。该方法包括:获取查询语句中的过滤条件;在所述过滤条件为整型列与字符串比较时,确定所述整型列的数据类型为目标数据类型;根据所述过滤条件中的关系运算符,将所述字符串转换为所述目标数据类型,并确定转换后的值;将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集。本发明只需将字符串转换为整型并与整型列进行比较,而不必将整型列批量的转换为decimal数据类型之后再比较检索,从而提高了数据检索效率,尤其在整型列的数据量较大时,数据检索效率可以大大提高。
Description
技术领域
本发明实施例涉及数据检索技术,尤其涉及一种整型列与字符串比较的方法、装置、服务器及存储介质。
背景技术
整型int或int64是数据库中基础数据类型,应用程序编写的SQL语句或随机生成的SQL语句中,很多场景会将整型列与字符串进行比较。字符串对应的数值可能是整型int或int64、浮点型float、双精度浮点型double,甚至是无法转换为数值的字符串。
现有技术中,在关系运算过程中,分别将整型列和字符串转换为目标数据类型decimal之后才能比较,这样能保证结果的正确性。但是,将字符串转换为decimal数据类型,并批量的将整型列转换为decimal数据类型之后再与转换后的字符串进行比较,会降低数据的检索效率。
发明内容
有鉴于此,本发明实施例提供一种整型列与字符串比较的方法、装置、服务器及存储介质,以提高数据的检索效率。
第一方面,本发明实施例提供了一种整型列与字符串比较的方法,所述方法包括:
获取查询语句中的过滤条件;
在所述过滤条件为整型列与字符串比较时,确定所述整型列的数据类型为目标数据类型;
根据所述过滤条件中的关系运算符,将所述字符串转换为所述目标数据类型,并确定转换后的值;
将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集。
第二方面,本发明实施例还提供了一种整型列与字符串比较的装置,所述装置包括:
过滤条件获取模块,用于获取查询语句中的过滤条件;
目标类型确定模块,用于在所述过滤条件为整型列与字符串比较时,确定所述整型列的数据类型为目标数据类型;
字符串转换模块,用于根据所述过滤条件中的关系运算符,将所述字符串转换为所述目标数据类型,并确定转换后的值;
检索结果确定模块,用于将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集。
第三方面,本发明实施例还提供了一种服务器,所述服务器包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任一实施例所述的整型列与字符串比较的方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任一实施例所述的整型列与字符串比较的方法。
本发明实施例的技术方案,通过在过滤条件为整型列与字符串比较时,将整型列的数据类型确定为目标数据类型,并根据过滤条件中的关系运算符,将字符串转换为所述目标数据类型,得到转换后的值,将整型列通过关系运算符与转换后的值进行比较检索,得到检索结果集,只需将字符串转换为整型并与整型列进行比较,而不必将整型列批量的转换为decimal数据类型之后再比较检索,从而提高了数据检索效率,尤其在整型列的数据量较大时,数据检索效率可以大大提高。
附图说明
图1是本发明实施例一提供的一种整型列与字符串比较的方法的流程图;
图2是本发明实施例二提供的一种整型列与字符串比较的方法的流程图;
图3是本发明实施例三提供的一种整型列与字符串比较的方法的流程图;
图4是本发明实施例四提供的一种整型列与字符串比较的方法的流程图;
图5是本发明实施例五提供的一种整型列与字符串比较的装置的结构示意图;
图6为本发明实施例六提供的一种服务器的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
实施例一
图1是本发明实施例一提供的一种整型列与字符串比较的方法的流程图,本实施例可适用于整型列与字符串比较的情况,该方法可以由整型列与字符串比较的装置来执行,该装置可以由软件和/或硬件来实现,一般可集成在服务器中。该方法具体包括如下步骤:
步骤110,获取查询语句中的过滤条件。
在接收到查询语句进行数据检索时,获取含有过滤条件的标志性子句,如where子句、on子句或having子句等,根据该标志性子句获取其中的过滤条件,如where子句中where后面的为过滤条件。
步骤120,在所述过滤条件为整型列与字符串比较时,确定所述整型列的数据类型为目标数据类型。
其中,整型列的数据类型为整型int或int64。
在过滤条件为整型列与字符串比较时,确定整型列的数据类型为目标数据类型,而不再将decimal数据类型作为目标数据类型,即在整型列的数据类型为整型int时确定目标数据类型为整型int,在整型列的数据类型为整型int64时确定目标数据类型为整型int64。
步骤130,根据所述过滤条件中的关系运算符,将所述字符串转换为所述目标数据类型,并确定转换后的值。
其中,所述关系运算符包括等于(=)、不等于(!=或<>)、小于(<)、小于等于(<=)、大于(>)或大于等于(>=)。
在将字符串转换为所述目标数据类型时,关系运算符决定了字符串向下取整、向上取整,或者转换为标签最大值或标签最小值等特殊数值。从而根据过滤条件中的关系运算符,将字符串转换为目标数据类型,并可以确定转换后的值。如果字符串无法转换为数值,则报错返回,如字符串为“1abcd”,则直接返回“字符串转换出错”,查询结束。其中,标签最小值或标签最大值用于标记在关系运算符为等于或者不等于时产生数据截断或在关系运算符为大于、小于、大于等于或小于等于时产生数据溢出时的特殊数值。
可选的,还包括:
在确定转换后的值时,确定转换后的值的标签类型。
其中,标签类型(null_flag)包括:空(NULL)、非空(NOT NULL)、标签最小值(SQL_MIN)或标签最大值(SQL_MAX)。
在将所述字符串转换为目标数据类型时,首先根据是否产生数据截断或数据溢出,从而确定标签类型,在标签类型为空时不用确定转换后的值,因为标签类型为空时转换后的值为无效值,直接返回空即可;在将字符串转换为目标数据类型时,没有产生数据溢出,或者在产生数据截断时关系运算符不是等于和不等于时,可以转换为具体的数值,则确定标签类型为非空,并确定转换后的值,转换后的值为有效值,后续可以根据该转换后的值进行比较;在关系运算符为等于或者不等于时产生数据截断,或者在关系运算符为大于、小于、大于等于或小于等于时产生数据溢出而且溢出类型为大于目标数据类型的最大值时,确定标签类型为标签最大值,并且将转换后的值也标记为标签最大值;在关系运算符为等于或者不等于时产生数据截断,或者在关系运算符为大于、小于、大于等于或小于等于时产生数据溢出而且溢出类型为小于目标数据类型的最小值时,确定标签类型为标签最小值,并且将转换后的值也标记为标签最小值。
步骤140,将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集。
在检索时,将所述整型列中的数据通过所述关系远算符与所述转换后的值进行比较,得到检索结果集,将检索结果集返回给用户。如果整型列中存在二级索引时,通过将字符串转换为整型列的数据类型,可以直接使用二级索引进行检索。
本实施例的技术方案,通过在过滤条件为整型列与字符串比较时,将整型列的数据类型确定为目标数据类型,并根据过滤条件中的关系运算符,将字符串转换为所述目标数据类型,得到转换后的值,将整型列通过关系运算符与转换后的值进行比较检索,得到检索结果集,只需将字符串转换为整型并与整型列进行比较,而不必将整型列批量的转换为decimal数据类型之后再比较检索,从而提高了数据检索效率,尤其在整型列的数据量较大时,数据检索效率可以大大提高。
实施例二
图2是本发明实施例二提供的一种整型列与字符串比较的方法的流程图,本实施例在上述实施例的基础上进行了优化,具体的,根据所述过滤条件中的关系运算符,将所述字符串转换为所述目标数据类型,并确定转换后的值,进一步包括:根据所述过滤条件中的关系运算符,确定所述关系运算符的类型;在所述关系运算符的类型为有效类型时,根据所述关系运算符的预设处理规则将所述字符串转换为目标数据类型,得到转换后的值。该方法具体包括如下步骤:
步骤210,获取查询语句中的过滤条件。
步骤220,在所述过滤条件为整型列与字符串比较时,确定所述整型列的数据类型为目标数据类型。
步骤230,根据所述过滤条件中的关系运算符,确定所述关系运算符的类型。
其中,关系运算符的类型包括有效类型或无效类型。
在关系运算符为等于(=)、不等于(!=或<>)、小于(<)、小于等于(<=)、大于(>)或大于等于(>=)时,确定关系运算符的类型为有效类型,在关系运算符为上述六种关系运算符之外的其他关系运算符时,确定关系运算符的类型为无效类型。在确定关系运算符的类型时,在转换操作符CAST上添加属性,所述属性表示所述关系运算符的类型,属性取值包括有效类型或无效类型。
在关系运算符的类型为无效类型时,按照现有技术进行处理,即将整型列和字符串均转换为decimal数据类型。
步骤240,在所述关系运算符的类型为有效类型时,根据所述关系运算符的预设处理规则将所述字符串转换为目标数据类型,得到转换后的值。
在关系运算符的类型为有效类型时,根据关系运算符的预设处理规则,如果字符串是整型或者小数点后全0时,直接确定整数部分为转换后的值;如果字符串转换为目标数据类型时数据溢出,则根据溢出类型确定标签最大值或标签最小值为转换后的值;如果字符串转换为目标数据类型时有截断警告,则根据所述关系运算符进行向下取整或者向上取整,取整之后的数值为转换后的值,如字符串为“1.9”,则会产生截断警告,这时根据关系运算符进行向下取整得到1或者向上取整得到2,如果取整之后数据溢出,则根据溢出类型确定标签最大值或标签最小值为转换后的值。其中,溢出类型包括小于目标数据类型的最小值或者大于目标数据类型的最大值,如整型int的最小值为-2147483648,整型int的最大值为2147483647,整型int64的最小值为-9223372036854775808,整型int64的最大值为9223372036854775807。在溢出类型为小于目标数据类型的最小值时,确定标签最小值为转换后的值;在溢出类型为大于目标数据类型的最大值时,确定标签最大值为转换后的值。
其中,根据所述关系运算符的预设处理规则将所述字符串转换为目标数据类型,得到转换后的值,可选包括:
在所述字符串是整数或者小数点后全为0时,将所述字符串转换为目标数据类型,得到转换后的值;在字符串不是整数且小数点后不全为0时,根据所述关系运算符和截断数据的预设转换规则,将所述字符串转换为目标数据类型,得到转换后的值;
在将所述字符串转换为目标数据类型发生溢出时,根据溢出类型确定标签最大值或标签最小值为所述转换后的值,其中,标签最大值和标签最小值是对溢出类型的标记。
值得说明书的是,标签最大值和标签最小值除了是对溢出类型的标记外,还可以是对关系运算符为等于或不等于时数据截断的标记。
首先确定所述字符串是否为整数或者小数点后全为0,在所述字符串是整数或者小数点后全为0时,将所述字符串转换为目标数据类型,确定字符串的整数部分为转换后的值;在字符串不是整数且小数点后不全为0时,根据关系运算符和截断数据的预设转换规则,将字符串转换为目标数据类型,得到转换后的值。截断数据的预设转换规则即根据关系运算符进行向上取整或者向下取整,取整之后的数据作为转换后的值。而在将字符串转换为目标数据类型的过程中如果发生溢出,则根据溢出类型确定标签最大值或标签最小值为转换后的值。表1是具体的截断数据的预设转换规则,如表1所示,在将字符串转换为目标数据类型时发生数据截断,在关系运算符为等于(=)或不等于(!=或<>)时,操作符CAST转换规则均为SQL_MAX,即均将字符串取整之后的数据标记为特殊数值SQL_MAX,即标记为标签最大值,这里操作符CAST转换规则不一定要用SQL_MAX,其他除了NULL和NOT_NULL任意标记都可以,如SQL_MIN;在关系运算符为大于(>)时,操作符CAST转换规则为向下取整,如果没有发生溢出,则为正常,即直接得到转换后的值,如果发生溢出,在溢出的数据小于目标数据类型最小值时标记为SQL_MIN,在溢出的数据大于目标数据类型最大值时,标记为SQL_MAX;其他关系运算符的情况具体见表1。通过截断数据的预设转换规则确定转换后的值,确保了转换后的值的准确性。
表1截断数据的预设转换规则
步骤250,将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集。
本实施例的技术方案,通过根据过滤条件中的关系运算符,确定关系运算符的类型,在关系运算符的类型为有效类型时,根据关系运算符的预设处理规则将字符串转换为目标数据类型,得到转换后的值,确保了转换的准确性,从而确保检索结果的准确性。
实施例三
图3是本发明实施例三提供的一种整型列与字符串比较的方法的流程图,本实施例在上述实施例的基础上进行了优化,具体的,将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集,进一步包括:将所述整型列中的数据通过所述关系运算符与所述转换后的值进行比较,按照预设比较规则,确定比较结果;在所述比较结果为真时,将所述整型列中对应的数据填充到检索结果集中。该方法具体包括如下步骤:
步骤310,获取查询语句中的过滤条件。
步骤320,在所述过滤条件为整型列与字符串比较时,确定所述整型列的数据类型为目标数据类型。
步骤330,根据所述过滤条件中的关系运算符,将所述字符串转换为所述目标数据类型,并确定转换后的值。
步骤340,将所述整型列中的数据通过所述关系运算符与所述转换后的值进行比较,按照预设比较规则,确定比较结果。
表2为预设比较规则,如表2所示,如果关系运算符是等于(=),转换后的值为标签最大值SQL_MAX时,表示字符串在转换为目标数据类型时发生截断,直接返回FALSE表示数据不匹配(即比较结果恒假),因为字符串发生截断后等号不可能成立;如果关系运算符是不等于(!=或<>),转换后的值为标签最大值SQL_MAX时,表示字符串在转换为目标数据类型时发生截断,直接返回TRUE表示数据匹配(即比较结果恒真),因为字符串发生截断后不等号一定成立;在关系运算符为大于(>)时,如果转换后的值为标签最大值SQL_MAX,则比较结果恒为FALSE,如果转换后的值为标签最小值SQL_MIN,则比较结果恒为TRUE,如果转换后的值为数值,则按照正常逻辑进行比较,即整型列中大于转换后的值的数据的比较结果为TRUE,整型列中小于转换后的值的数据的比较结果为FALSE;其他关系运算符即大于等于(>=)、小于(<)及小于等于(<=)具体见表2。
表2预设比较规则
步骤350,在所述比较结果为真时,将所述整型列中对应的数据填充到检索结果集中。
在比较结果为真时,说明整型列中对应的数据即检索到的数据满足过滤条件,将整型列中对应的数据填充到检索结果集中。
例如,表T有10行数据,创建的表T如下:
SQL>drop table t;
SQL>create table t(c1int);
SQL>insert into t select level from dual connect by level<=10;
SQL>commit;
在查询语句为“SQL>select*from t where c1='5.1';”时,得到的检索结果集即返回结果为“未选定行”,这是因为字符串“5.1”向整型转换时发生数据截断,关系运算符等于直接返回SQL_MAX,因此不可能相等,所以直接返回FALSE,没有数据匹配因此返回0行。
在查询语句为“SQL>select*from t where c1!='5.1';”时,得到的检索结果集为“1,2,3,4,5,6,7,8,9,10”,这是因为字符串“5.1”向整型转换时发生数据截断,关系运算符不等于直接返回SQL_MAX,因此一定不相等,所以直接返回TRUE,数据全匹配因此返回10行。
在查询语句为“SQL>select*from t where c1>'5.1';”时,得到的检索结果集为“6,7,8,9,10”,因为字符串“5.1”向整型转换时发生数据截断,关系运算符大于向下取整,字符串“5.1”向下取整为5,大于5的整型有5行。
在查询语句为“SQL>select*from t where c1<'5.1';”时,得到的检索结果集为“1,2,3,4,5”,因为字符串“5.1”向整型转换时发生数据截断,关系运算符小于向上取整,字符串“5.1”向上取整为6,小于6的整型有5行。
在查询语句为“SQL>select*from t where c1>='5.1';”时,得到的检索结果集为“6,7,8,9,10”,因为字符串“5.1”向整型转换时发生数据截断,关系运算符大于等于向上取整,字符串“5.1”向上取整为6,大于等于6的整型有5行。
在查询语句为“SQL>select*from t where c1<='5.1';”时,得到的检索结果集为“1,2,3,4,5”,因为字符串“5.1”向整型转换时发生数据截断,关系运算符小于等于向下取整,字符串“5.1”向下取整为5,小于等于5的整型有5行。
在查询语句为“SQL>select*from t where c1<'1234556789123456789';”时,得到的检索结果集为“1,2,3,4,5,6,7,8,9,10”,因为字符串“1234556789123456789”中的数值超过了整型最大值,在转换为整型时发生了溢出,用SQL_MAX表示,整型小于SQL_MAX恒返回TRUE,数据全匹配因此返回10行。
本实施例的技术方案,通过在将整型列中的数据通过关系运算符与转换后的值进行比较时,确定比较结果为真还是为假,在比较结果为真时,将整型列中对应的数据填充到检索结果集中,逐个数据进行比较,确保了比较结果的准确性,进一步确保了检索结果的准确性。
实施例四
图4是本发明实施例四提供的一种整型列与字符串比较的方法的流程图,本实施例在上述实施例的基础上进行了优化,具体的,将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集,进一步包括:根据所述整型列上的二级索引,将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集。该方法具体包括如下步骤:
步骤410,获取查询语句中的过滤条件。
步骤420,在所述过滤条件为整型列与字符串比较时,确定所述整型列的数据类型为目标数据类型。
步骤430,根据所述过滤条件中的关系运算符,将所述字符串转换为所述目标数据类型,并确定转换后的值。
步骤440,根据所述整型列上的二级索引,将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集。
数据库中为了提高数据的检索效率,最简单扼要的方法就是为过滤条件中涉及的列创建二级索引。现有技术中,由于过滤条件中的数据类型不匹配会导致二级索引无法使用,即在整型列与字符串比较时,本来执行计划可以优化使用二级索引快速定位的,但是由于数据类型不匹配也只能通过全表扫描的方式检索数据,即将整型列和字符串均转换为decimal数据类型后,通过全表扫描的方式检索数据,大大降低了数据检索效率。而本发明实施例通过将字符串转换为整型列的数据类型后,可以使用整型列上的二级索引,根据整型列上的二级索引,扫描整型列中的数据,即将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,确定满足过滤条件的数据为检索结果集,即可以使用整型列上的二级索引进行快速定位,提高了数据检索效率。
例如,创建的表TEST有100万行数据,创建的表TEST如下:
SQL>drop table test;
SQL>create table test(c1int);
SQL>insert into test select level from dual connect by level<=1000000;
SQL>commit;
在没有二级索引时,使用现有技术进行检索,即使用全表扫描进行检索,将整型列和字符串均转换为decimal数据类型,执行计划和用时如下:
已用时间:88.455毫秒。
在没有二级索引时,使用本发明实施例的方案进行检索,将字符串转换为整型,执行计划和用时如下:
已用时间:45.995毫秒。
在有二级索引时,使用本发明实施例的方案进行检索,即将字符串转换为整型,并使用二级索引进行检索,执行计划和用时如下:
已用时间:0.689毫秒。
从以上性能对比结果中可以看出:
当整型列没有创建二级索引时,与字符串比较采用本发明实施例的方法,通过将字符串转换为整型后进行比较,用时从改造前的88.455毫秒降低到了改造后的45.995毫秒,性能提高了2倍。因为整型列上虽然没有二级索引快速定位,但去掉了整型列向decimal转换的过程,提高了数据检索效率。
当整型列创建有二级索引时,采用本发明实施例的方法,通过将字符串转换为整型后进行比较,并使用二级索引进行检索,只需要0.689毫秒,与改造后的全表扫描用时45.995毫秒相比性能提高了67倍,与改造前的全表扫描用时88.455毫秒相比性能提高了128倍。
从以上分析中可以看出本发明实施例具有意想不到的技术效果,大大提高了数据检索的效率。
本实施例的技术方案,通过将字符串转换为整型列的数据类型,可以使用整型列上的二级索引,从而大大提高了数据检索的效率。
实施例五
图5是本发明实施例五提供的一种整型列与字符串比较的装置的结构示意图,本实施例可适用于整型列与字符串比较的情况,该装置可以执行本发明任一实施例所述的整型列与字符串比较的方法,该装置可以由软件和/或硬件来实现,一般可集成在服务器中。如图5所示,本实施例所述的整型列与字符串比较的装置包括:过滤条件获取模块510、目标类型确定模块520、字符串转换模块530和检索结果确定模块540。
其中,过滤条件获取模块510,用于获取查询语句中的过滤条件;
目标类型确定模块520,用于在所述过滤条件为整型列与字符串比较时,确定所述整型列的数据类型为目标数据类型;
字符串转换模块530,用于根据所述过滤条件中的关系运算符,将所述字符串转换为所述目标数据类型,并确定转换后的值;
检索结果确定模块540,用于将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集。
可选的,所述字符串转换模块包括:
运算符类型确定单元,用于根据所述过滤条件中的关系运算符,确定所述关系运算符的类型;
字符串转换单元,用于在所述关系运算符的类型为有效类型时,根据所述关系运算符的预设处理规则将所述字符串转换为目标数据类型,得到转换后的值。
可选的,所述字符串转换单元具体用于:
在所述关系运算符的类型为有效类型时,在所述字符串是整数或者小数点后全为0时,将所述字符串转换为目标数据类型,得到转换后的值;在字符串不是整数且小数点后不全为0时,根据所述关系运算符和截断数据的预设转换规则,将所述字符串转换为目标数据类型,得到转换后的值;
在将所述字符串转换为目标数据类型发生溢出时,根据溢出类型确定标签最大值或标签最小值为所述转换后的值,其中,标签最大值和标签最小值是对溢出类型的标记。
可选的,所述检索结果确定模块包括:
比较结果确定单元,用于将所述整型列中的数据通过所述关系运算符与所述转换后的值进行比较,按照预设比较规则,确定比较结果;
检索结果确定单元,用于在所述比较结果为真时,将所述整型列中对应的数据填充到检索结果集中。
可选的,还包括:
标签类型确定模块,用于在确定转换后的值时,确定转换后的值的标签类型。
所述检索结果确定模块具体用于:
根据所述整型列上的二级索引,将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集。
上述整型列与字符串比较的装置可执行本发明任意实施例所提供的整型列与字符串比较的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例提供的整型列与字符串比较的方法。
实施例六
图6为本发明实施例六提供的一种服务器的结构示意图,如图6所示,该服务器包括处理器610、存储器620、输入装置630和输出装置640;服务器中处理器610的数量可以是一个或多个,图6中以一个处理器610为例;服务器中的处理器610、存储器620、输入装置630和输出装置640可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器620作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的整型列与字符串比较的方法对应的程序指令/模块(例如,整型列与字符串比较的装置中的过滤条件获取模块510、目标类型确定模块520、字符串转换模块530和检索结果确定模块540)。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述的整型列与字符串比较的方法。
存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器620可进一步包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置630可用于接收输入的数字或字符信息,以及产生与服务器的用户设置以及功能控制有关的键信号输入。输出装置640可包括显示屏等显示设备。
实施例七
本发明实施例七还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种整型列与字符串比较的方法,该方法包括:
获取查询语句中的过滤条件;
在所述过滤条件为整型列与字符串比较时,确定所述整型列的数据类型为目标数据类型;
根据所述过滤条件中的关系运算符,将所述字符串转换为所述目标数据类型,并确定转换后的值;
将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的整型列与字符串比较的方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述整型列与字符串比较的装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (7)
1.一种整型列与字符串比较的方法,其特征在于,所述方法包括:
获取查询语句中的过滤条件;
在所述过滤条件为整型列与字符串比较时,确定所述整型列的数据类型为目标数据类型;
根据所述过滤条件中的关系运算符,将所述字符串转换为所述目标数据类型,并确定转换后的值;
将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集;
所述将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集,包括:
将所述整型列中的数据通过所述关系运算符与所述转换后的值进行比较,按照预设比较规则,确定比较结果;在所述比较结果为真时,将所述整型列中对应的数据填充到检索结果集中;
所述根据所述过滤条件中的关系运算符,将所述字符串转换为所述目标数据类型,并确定转换后的值,包括:
根据所述过滤条件中的关系运算符,确定所述关系运算符的类型;
在所述关系运算符的类型为有效类型时,根据所述关系运算符的预设处理规则将所述字符串转换为目标数据类型,得到转换后的值;其中,当所述关系运算符为等于、不等于、小于、小于等于或大于等于时,所述关系运算符的类型为有效类型;
其中,所述根据所述关系运算符的预设处理规则将所述字符串转换为目标数据类型,得到转换后的值,包括:
使用标签值对数据溢出或数据截断进行标记,其中标签值包括:空、非空、标签最大值、标签最小值,标签值等于非空时表示转换后的数值有效;
若所述关系运算符是等于或不等于,在转换过程中数据溢出或数据截断,使用空和非空以外的其它标签值进行标记;
若所述关系运算符是大于或小于等于,向下取整;
若所述关系运算符是大于等于或小于,则向上取整;
取整之后的数据若小于目标数据类型最小值时,标记为标签最小值,若大于所述目标数据类型最大值时,标记为标签最大值;若未发生溢出,得到正常数值;
其中,所述预设比较规则包括:根据所述关系运算符类型与转换后值确定比较结果;所述转换后的值包括标签最大值、标签最小值、数值其中一种;
若所述转换后的值为标签最大值或标签最小值说明数据转换发生截断,需要根据所述关系运算符确定比较结果,包括:
如果关系运算符是等于,比较结果恒假;
如果关系运算符是不等于,比较结果恒真;
如果关系运算符是大于或大于等于,标签最大值则比较结果恒假,标签最小值则比较结果恒真;
如果关系运算符是小于或小于等于,标签最大值则比较结果恒真,标签最小值则比较结果恒假;
若所述转换后的值为数值,则按照正常逻辑进行数值比较。
2.根据权利要求1所述的方法,其特征在于,根据所述关系运算符的预设处理规则将所述字符串转换为目标数据类型,得到转换后的值,包括:
在所述字符串是整数或者小数点后全为0时,将所述字符串转换为目标数据类型,得到转换后的值;在字符串不是整数且小数点后不全为0时,根据所述关系运算符和截断数据的预设转换规则,将所述字符串转换为目标数据类型,得到转换后的值;
在将所述字符串转换为目标数据类型发生溢出时,根据溢出类型确定标签最大值或标签最小值为所述转换后的值,其中,标签最大值和标签最小值是对溢出类型的标记。
3.根据权利要求1所述的方法,其特征在于,还包括:
在确定转换后的值时,确定转换后的值的标签类型。
4.根据权利要求1所述的方法,其特征在于,将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集,包括:
根据所述整型列上的二级索引,将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集。
5.一种整型列与字符串比较的装置,其特征在于,所述装置包括:
过滤条件获取模块,用于获取查询语句中的过滤条件;
目标类型确定模块,用于在所述过滤条件为整型列与字符串比较时,确定所述整型列的数据类型为目标数据类型;
字符串转换模块,用于根据所述过滤条件中的关系运算符,将所述字符串转换为所述目标数据类型,并确定转换后的值;
检索结果确定模块,用于将所述整型列通过所述关系运算符与所述转换后的值进行比较并检索,得到检索结果集;
比较结果确定单元,用于将所述整型列中的数据通过所述关系运算符与所述转换后的值进行比较,按照预设比较规则,确定比较结果;检索结果确定单元,用于在所述比较结果为真时,将所述整型列中对应的数据填充到检索结果集中;
所述字符串转换模块包括:
运算符类型确定单元,用于根据所述过滤条件中的关系运算符,确定所述关系运算符的类型;
字符串转换单元,用于在所述关系运算符的类型为有效类型时,根据所述关系运算符的预设处理规则将所述字符串转换为目标数据类型,得到转换后的值;其中,当在所述关系运算符为等于、不等于、小于、小于等于或大于等于时,所述关系运算符的类型为有效类型;
其中,所述根据所述关系运算符的预设处理规则将所述字符串转换为目标数据类型,得到转换后的值,包括:
使用标签值对数据溢出或数据截断进行标记,其中标签值包括:空、非空、标签最大值、标签最小值,标签值等于非空时表示转换后的数值有效;
若所述关系运算符是等于或不等于,在转换过程中数据溢出或数据截断,使用空和非空以外的其它标签值进行标记;
若所述关系运算符是大于或小于等于,向下取整;
若所述关系运算符是大于等于或小于,则向上取整;
取整之后的数据若小于目标数据类型最小值时,标记为标签最小值,若大于所述目标数据类型最大值时,标记为标签最大值;若未发生溢出,得到正常数值;
其中,所述预设比较规则包括:根据所述关系运算符类型与转换后值确定比较结果;所述转换后的值包括标签最大值、标签最小值、数值其中一种;
若所述转换后的值为标签最大值或标签最小值说明数据转换发生截断,需要根据所述关系运算符确定比较结果,包括:
如果关系运算符是等于,比较结果恒假;
如果关系运算符是不等于,比较结果恒真;
如果关系运算符是大于或大于等于,标签最大值则比较结果恒假,标签最小值则比较结果恒真;
如果关系运算符是小于或小于等于,标签最大值则比较结果恒真,标签最小值则比较结果恒假;
若所述转换后的值为数值,则按照正常逻辑进行数值比较。
6.一种服务器,其特征在于,所述服务器包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4中任一所述的整型列与字符串比较的方法。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一所述的整型列与字符串比较的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810307318.2A CN108536819B (zh) | 2018-04-08 | 2018-04-08 | 整型列与字符串比较的方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810307318.2A CN108536819B (zh) | 2018-04-08 | 2018-04-08 | 整型列与字符串比较的方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108536819A CN108536819A (zh) | 2018-09-14 |
CN108536819B true CN108536819B (zh) | 2021-05-04 |
Family
ID=63483314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810307318.2A Active CN108536819B (zh) | 2018-04-08 | 2018-04-08 | 整型列与字符串比较的方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108536819B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831252A (zh) * | 2020-06-30 | 2020-10-27 | 深圳市永达电子信息股份有限公司 | 一种超长位数加法的处理方法和计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101345051A (zh) * | 2008-08-19 | 2009-01-14 | 南京师范大学 | 带定量参数的地理信息系统语音控制方法 |
CN105989057A (zh) * | 2015-02-06 | 2016-10-05 | 北京中搜网络技术股份有限公司 | 一种基于串操作的数字类检索串的转换方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6571233B2 (en) * | 2000-12-06 | 2003-05-27 | International Business Machines Corporation | Optimization of SQL queries using filtering predicates |
-
2018
- 2018-04-08 CN CN201810307318.2A patent/CN108536819B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101345051A (zh) * | 2008-08-19 | 2009-01-14 | 南京师范大学 | 带定量参数的地理信息系统语音控制方法 |
CN105989057A (zh) * | 2015-02-06 | 2016-10-05 | 北京中搜网络技术股份有限公司 | 一种基于串操作的数字类检索串的转换方法 |
Non-Patent Citations (3)
Title |
---|
"LinQtoEntity类型转换";wu rang;《https://wurang.net/linq_to_entity_converter/》;20180305;正文第1页 * |
"字符串转整数";厚积薄发;《http://www.cppblog.com/weiym/archive/2013/09/23/203389.html》;20170126;正文第3-9页 * |
wu rang."LinQtoEntity类型转换".《https://wurang.net/linq_to_entity_converter/》.2018,正文第1页. * |
Also Published As
Publication number | Publication date |
---|---|
CN108536819A (zh) | 2018-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8478749B2 (en) | Method and apparatus for determining relevant search results using a matrix framework | |
US8880512B2 (en) | Method, apparatus and system, for rewriting search queries | |
CN103425687A (zh) | 一种基于关键词的检索方法和系统 | |
RU2013119801A (ru) | Способы и системы для реализации приближенного сравнения строк в базе данных | |
CN111428494A (zh) | 专有名词的智能纠错方法、装置、设备及存储介质 | |
CN110659282B (zh) | 数据路由的构建方法、装置、计算机设备和存储介质 | |
CN104361042A (zh) | 一种信息检索方法及装置 | |
CN105045875A (zh) | 个性化信息检索方法及装置 | |
CN106708814B (zh) | 一种基于关系型数据库的检索方法及装置 | |
CN109299101B (zh) | 数据检索方法、装置、服务器和存储介质 | |
CN112883030A (zh) | 数据收集方法、装置、计算机设备和存储介质 | |
CN102314464B (zh) | 歌词搜索方法及搜索引擎 | |
CN112328910A (zh) | 一种涵盖aoi和poi标准地址匹配引擎的方法及系统 | |
US11487795B2 (en) | Template-based automatic software bug question and answer method | |
US10565188B2 (en) | System and method for performing a pattern matching search | |
CN113722600B (zh) | 应用于大数据的数据查询方法、装置、设备及产品 | |
CN102915381A (zh) | 基于多维语义的可视化网络检索呈现系统及呈现控制方法 | |
CN111026787A (zh) | 网点检索方法、装置及系统 | |
CN108536819B (zh) | 整型列与字符串比较的方法、装置、服务器及存储介质 | |
CN113918605A (zh) | 数据查询方法、装置、设备以及计算机存储介质 | |
CN111984673B (zh) | 一种电网电能量计量系统树形结构模糊检索方法和装置 | |
Wu et al. | Searching online book documents and analyzing book citations | |
CN111797095A (zh) | 索引构建方法和json数据查询方法 | |
CN106776590A (zh) | 一种获取词条译文的方法及系统 | |
CN110633430B (zh) | 事件发现方法、装置、设备和计算机可读存储介质 |
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 |