[Err] 1054 Mysql问题分析及解决方法

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的错误)。


你可能感兴趣的:(SQL)