create table (id int, orderno varchar(10));-- 这个查询语句,就存在着一个隐式的类型转换。 select * from orderno = 1234567 ;
避免个别条件失效时SQL语法错误 ——例如select * from t1 where id=3,这个id是传进来的,如果代码写的不够强壮,没有传进来值,就会变成select * from t1 where id=,等号后面没内容了,SQL语句就报错,而加上引号,就变成select * from t1 where id='',不会报错,只是查不到值。
create table (id int, orderno varchar(10));-- 这个查询语句,就存在着一个隐式的类型转换。
select * from orderno = 1234567 ;
以阿里的风格,where 条件,都会参数化,而不去拼接SQL;所以,这几条规则前面或后面,应该还有具体的说明,只是楼主没有贴出来;
2– 避免潜在的类型隐式转换风险
这两条是不是 冲突呢? 如果所有的where条件都加上引号,例如 select * from t1 where id= “” and name ="" ,是不是就存在了类型隐形转换的风险(类型转换后 数据库不会利用索引查找),