美文网首页jouypub.comMySql进阶
MySQL字符串和数字比较

MySQL字符串和数字比较

作者: JouyPub | 来源:发表于2018-12-21 09:44 被阅读0次

在项目中,我们经常会用到模糊搜索,但如果错误的将字符串类型和数字类型做比较,有时搜索出来的结果就并不是我们预期的。举例如下:

mybatis中的xml语句如下:

<if test="criteria != null and criteria.length()>0">
    AND (name like concat("%",#{criteria},"%") OR id = #{criteria})
</if>

搜索时我们输入“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
欢迎订阅「K叔区块链」 - 专注于区块链技术学习
博客地址:http://www.jouypub.com
简书主页:https://www.jianshu.com/u/756c9c8ae984
segmentfault主页:https://segmentfault.com/blog/jouypub
腾讯云主页:https://cloud.tencent.com/developer/column/72548

相关文章

  • JavaScript == 相等运算符自动转换的4种简单情形

    情景1:比较数字和字符串 比较数字和字符串时,都要将字符串转换为数据,再两个数字进行比较 比如无法转换为数字,是字...

  • MySQL字符串和数字比较

    在项目中,我们经常会用到模糊搜索,但如果错误的将字符串类型和数字类型做比较,有时搜索出来的结果就并不是我们预期的。...

  • php比较运算符

    一,比较的注意事项 1,如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照...

  • 不同数据类型的隐形转换

    1数字和字符串、布尔类型、数组进行比较时,字符串(或布尔类型、或数组)先转换为数字(Number),再进行比较; ...

  • linux shell中的比较符号与特殊符号介绍

    shell字符串比较、判断是否为数字 二元比较操作符,比较变量或者比较数字。注意数字与字符串的区别。 整数比较 -...

  • mysql字符串与数字比较问题

    由于某些原因,项目中使用到雪花id(固定18位的数字)作为mysql表的PRIMARY KEY,且id类型为var...

  • 隐式数据类型转换

    任何数据类型和数字比较都先(Number)转为数字 任何数据类型和字符串比较都先转为(toString)字符串在转...

  • MySQL核心技术与最佳实践(第6章 Mysql 编程基础)

    hex()函数可将字符串货数字转换成十六进制格式字符串select hex('MySQL');变量分为系统变量和用...

  • mysql之字符串进行运算或大小比较

    mysql字符串进行加减乘除的运算: 在mysql当中,字符串类型间进行加减乘除运算的时候,会截取字符串以数字开头...

  • MySQL常用函数

    MySQL常用函数分为四种:1、字符串函数:用于处理字符串2、数值函数:用于处理数字3、日期和时间函数4、系统信息...

网友评论

    本文标题:MySQL字符串和数字比较

    本文链接:https://www.haomeiwen.com/subject/duopkqtx.html