这是阿里内部规定的数据库规范,求大神解释

lianbang6007 2017-04-23 10:24:22
怎么算是好MySQL SQL
– 所有WHERE条件都加上引号
– 避免潜在的类型隐式转换风险
– 避免个别条件失效时SQL语法错误
...全文
652 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_33676422 2017-04-25
  • 打赏
  • 举报
回复
1– 所有WHERE条件都加上引号 2– 避免潜在的类型隐式转换风险 这两条是不是 冲突呢? 如果所有的where条件都加上引号,例如 select * from t1 where id= “” and name ="" ,是不是就存在了类型隐形转换的风险(类型转换后 数据库不会利用索引查找),
卖水果的net 版主 2017-04-24
  • 打赏
  • 举报
回复
引用 3 楼 qq_36069196 的回复:
– 所有WHERE条件都加上引号 这句话如何理解呢?
引用 4 楼 xiaoxiangqing 的回复:
所有WHERE条件都加上引号 这句话如何理解呢? -->是防止出错吧
以阿里的风格,where 条件,都会参数化,而不去拼接SQL; 所以,这几条规则前面或后面,应该还有具体的说明,只是楼主没有贴出来;
xiaoxiangqing 2017-04-24
  • 打赏
  • 举报
回复
所有WHERE条件都加上引号 这句话如何理解呢? -->是防止出错吧
qq_36069196 2017-04-24
  • 打赏
  • 举报
回复
– 所有WHERE条件都加上引号 这句话如何理解呢?
zbdzjx 2017-04-24
  • 打赏
  • 举报
回复
避免个别条件失效时SQL语法错误 ——例如select * from t1 where id=3,这个id是传进来的,如果代码写的不够强壮,没有传进来值,就会变成select * from t1 where id=,等号后面没内容了,SQL语句就报错,而加上引号,就变成select * from t1 where id='',不会报错,只是查不到值。
卖水果的net 版主 2017-04-24
  • 打赏
  • 举报
回复
为了避免断章取义,应该把前面的一段,和本段都写全了。 – 避免潜在的类型隐式转换风险 create table (id int, orderno varchar(10)); -- 这个查询语句,就存在着一个隐式的类型转换。 select * from orderno = 1234567 ;

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧