t_user表的phone_number字段是varchar(255)类型的,表示手机号,
在查询某个手机号时,sql语句如下:
SELECT phone_number FROM t_user WHERE phone_number = 13400000000
查询结果:
phone_number
------------------------------
13400000000
13400000000x
怎么13400000000x也查出来的?
在手机号2边加引号:
SELECT phone_number FROM t_user WHERE phone_number = '13400000000'
phone_number
------------------------------
13400000000
原因可能是mysql检测到13400000000是个整数,所以把phone_number取整了再查,看下面语句:
SELECT CAST(phone_number AS UNSIGNED) digit, phone_number FROM t_user WHERE phone_number = 13400000000
结果:
digit phone_number
---------------------------------------------------------
13400000000 13400000000
13400000000 13400000000x
结论:字符串型的字段值一定要加引号,其实整形、enum型的最好也加引号