SQL 1: SELECT * from table1 WHERE courier_phone =132aaaaaaaa
SQL 2: SELECT * from table1 WHERE courier_phone ='132aaaaaaa'
courier_phone 在数据库中为 varchar类型;
SQL 1 报出错误 1054
可是执行SQL 3, SQL4 都没有问题。
SQL 3: SELECT * from table1 WHERE courier_phone =13212345678
SQL 4: SELECT * from table1 WHERE courier_phone ='13212345678'
内心很是困惑,为什么加上 引号就能成功?
13212345678与132aaaaaaa 不都是转换成字符串了,怎么就一个不成功?
答: 13212345678 ,132aaaaaaa 不加引号都会默认为数值类型,当SQL执行前, mysql库会先加载解析SQL,13212345678 成功解析成为数值类型,但是132aaaaaaa 不能解析成为数值类型(所以就报1054的错误)。