摘要:在项目中,我们经常会用到模糊搜索,但如果错误的将字符串类型和数字类型做比较,有时搜索出来的结果就并不是我们预期的。这就是字符串和数字比较的坑了比较时会把字符串类型转成整数类型,从首字母开始,遇到非数字类型后终止。
在项目中,我们经常会用到模糊搜索,但如果错误的将字符串类型和数字类型做比较,有时搜索出来的结果就并不是我们预期的。举例如下:
mybatis中的xml语句如下:
AND (name like concat("%",#{criteria},"%") OR id = #{criteria})
搜索时我们输入“884测试”,结果会包含了id=884的记录,但是名称却没有匹配的。这就是MySQL字符串和数字比较的坑了:比较时会把字符串类型转成整数类型,从首字母开始,遇到非数字类型后终止。
举几个例子看下:
SELECT "abc"=1; 结果:0
SELECT "1abc"=1; 结果:1
SELECT "abc"=0; 结果:1
SELECT "a2bc"=2; 结果:0
那么这个问题改如何解决了,其实只需要做一个类型转换就可以了,如下:
SELECT "2bc"=cast(2 as CHAR); 结果:0
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/48332.html
摘要:如果描述为字符串,类型的值应该使用连字号作为分隔符分开,而类型的值应该使用冒号作为分隔符分开。类型字段可以从集合中取得一个值或使用值,除此之外的输入将会使在这个字段中插入一个空字符串。 本篇博客稍微有点长,它实际上包括两个内容:一是mysql字段类型的介绍,二是在mysql建表过程中是如何正确选择这些字段类型; 字段类型 数值 MySQL 的数值数据类型可以大致划分为两个类别,一个是整...
摘要:标识列的类型选择标识列可能会和其它值进行比较如在关联操作中,或者根据标识列寻找其它列。所以为标识列选择恰当的数据类型非常重要。整数类型是标识列最好的选择,因为整数计算很快并且可以。应该尽可能避免采用字符串类型作为标识列。 当一个列可以选择多种数据类型时,应该优先选择数字类型,其次是日期或二进制类型,最后是字符类型。越简单的数据类型,需要的处理资源就越少。对于相同级别的数据类型,应该优先...
摘要:数据类型整数数字类型整数和实数数字表示对应最大存储位数如表示不允许负数则范围为常规数据库中只是表示控制显示字符的个数是个和存储和计算是一样的即照样可以存储位数实数实数有分数部分和类型支持使用标准的浮点运算近似计算占用个字节占用个 数据类型 整数 数字类型:整数和实数 tinyint(8) smallint(16) mediuint(24) int(32) bigint(64) 数...
摘要:说明本文是作者对数据库数据存储类型的小小总结。与一样,二进制形式存储数字类型,如表示存储一个小数点后两位总共位精度的数字,范围是。分为和,根据存储字节最大长度分类。集合类型,与类似,最多包含个成员。 说明:本文是作者对MySQL数据库数据存储类型的小小总结。 Numeric Type (数字类型) 1、TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT主要根据存...
摘要:与它们都是精确整型数据类型,但是占用字节数和表达的范围不同。为了避免数据库被过度设计,布尔枚举类型也采用。的显示宽度为,但并不影响更多位数的显示。声明语法是,占用字节。 最近在准备给开发做一个mysql数据库开发规范方面培训,一步一步来,结合在生产环境发现的数据库方面的问题,从几个常用的数据类型说起。 int、tinyint与bigint 它们都是(精确)整型数据类型,但是占用字节数和...
阅读 2315·2023-04-26 02:57
阅读 1222·2023-04-25 21:40
阅读 1740·2021-11-24 09:39
阅读 3332·2021-08-30 09:49
阅读 556·2019-08-30 15:54
阅读 1050·2019-08-30 15:52
阅读 1903·2019-08-30 15:44
阅读 1180·2019-08-28 18:27