在项目中,我们常常会用到隐约搜刮,但假如毛病的将字符串范例和数字范例做比较,偶然搜刮出来的效果就并非我们预期的。举例以下:
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
以上就是MySQL中字符串和数字的比较(附示例)的细致内容,更多请关注ki4网别的相干文章!