怎么算是好MySQL SQL
– 所有WHERE条件都加上引号
– 避免潜在的类型隐式转换风险
– 避免个别条件失效时SQL语法错误

解决方案 »

  1.   

    为了避免断章取义,应该把前面的一段,和本段都写全了。– 避免潜在的类型隐式转换风险

    create table (id int, orderno varchar(10));-- 这个查询语句,就存在着一个隐式的类型转换。
    select * from orderno = 1234567 ;
      

  2.   

    避免个别条件失效时SQL语法错误 ——例如select * from t1 where id=3,这个id是传进来的,如果代码写的不够强壮,没有传进来值,就会变成select * from t1 where id=,等号后面没内容了,SQL语句就报错,而加上引号,就变成select * from t1 where id='',不会报错,只是查不到值。
      

  3.   

    – 所有WHERE条件都加上引号   这句话如何理解呢? 
      

  4.   

    所有WHERE条件都加上引号   这句话如何理解呢? -->是防止出错吧
      

  5.   


    以阿里的风格,where 条件,都会参数化,而不去拼接SQL;所以,这几条规则前面或后面,应该还有具体的说明,只是楼主没有贴出来;
      

  6.   

    1– 所有WHERE条件都加上引号
    2– 避免潜在的类型隐式转换风险
    这两条是不是 冲突呢? 如果所有的where条件都加上引号,例如  select  *  from t1 where id= “”  and name =""   ,是不是就存在了类型隐形转换的风险(类型转换后  数据库不会利用索引查找),