sql:当一列为空时取另一列(case when then)

在处理设备库时,针对安卓和iOS设备,经常需要合并imei和idfa作为设备ID。本文介绍了如何使用SQL的CASE WHEN THEN语句,当imei为空时取idfa,反之亦然。通过案例解析了SQL的简单Case函数和Case搜索函数,帮助理解如何在字段值缺失时进行有效数据提取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在移动广告业务中,设备基本上分成两大阵营:安卓和ios,所以在设置设备库的时候一般都会有两个字段一个叫imei,对应ios的设备id则叫idfa。

当手机为安卓时,imei字段有值,idfa为空;当设备为ios时,idfa有值,imei为空。但当我们需要获取所有的设备id时则是所有的imei和idfa之和。

这样就会涉及到当imei字段为空时取idfa字段,当idfa字段为空时取imei字段,解决方法当然就是使用case,下面简单介绍一下然后进入实战:

参考资料:http://www.cnblogs.com/cyjch/archive/2012/03/21/2410794.html

Case具有两种格式。简单Case函数和Case搜索函数。

--简单Case函数
CASE sex
      WHEN '1'  THEN '男'
      WHEN '2'  THEN '女'
ELSE '其他'  END
--Case搜索函数
CASE WHEN sex = '1'  THEN '男'
      WHEN sex = '2'  THEN '女'
ELSE '其他'  END

这两种方式可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。


实战如下:

select sbid, act_type from (select case when imei is null then idfa else imei end as sbid,act_type,act_time from rela_load where act_type=52 or act_type=54 or act_type=55 or act_type=56 or act_type=57 order by act_time) d; 当imei是null的时候取idfa,否则取imei。

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值