记两则SQL编程中的坑

来源:互联网 发布:菜鸟网络航空港区地址 编辑:程序博客网 时间:2024/06/06 16:27

 近期写SQL提取数据时,踩了两个坑。稍做回顾总结,以期对其他人能有所帮助。

concat的使用

concat用于合并多个字符串,很早以前,一直以为如果输入的参数中有null值,concat会自动忽视之。直到有一次的业务需求开发中,需要合并商品的多个类目信息,最后发现总是有很多类目为空的商品,排查明细后,发现了真相:如果输入concat的众多参数中,只要有一个值为null,最终结果就为null  !

我们在Mysql中复现这个过程:


解决方案:在输入变量时,先用COALESCE函数进行空值处理,如下:


两表关联

假设表A与表B可分别通过A.item_id与B.item_id进行关联,但是A.item_id是字符串,而B.item_id是整型,如果我们明知道这两个item_id是同一个事物,可以关联得上。同时,整型与数值内容的字符串往往也可以直接做比较,就会直接在JOIN时,用 A.item_id = B.item_id 这样的方式去关联。但笔者在阿里云的ODPS平台上,是遇到过这样做会丢失记录的情况,所以最好是在关联时,用cast函数将键值转换为同一种类型后再进行等值关联。




0 0
原创粉丝点击