相关文章推荐
宽容的莲藕  ·  sqoop job 创建报错 Got ...·  7 月前    · 
高大的豆浆  ·  deletefile失败 ...·  1 年前    · 
乐观的西瓜  ·  jQuery EasyUI ...·  1 年前    · 

在移动广告业务中,设备基本上分成两大阵营:安卓和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 --Case搜索函数 CASE WHEN sex = WHEN sex =

这两种方式可以实现相同的功能。 简单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。
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
没有,用 case when 来代替就行了. 例如,下面的语句显示中文年月 代码如下: select getdate() as 日期, case month(getdate()) when 11 then ‘十一’ when 12 then ‘十二’ else substring(‘一二三四五六七八九十’, month(getdate()),1) end+’月’ as 月份 CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE 。 首先让我们看一下 CASE 的语法。在一般的 SELEC
SELECT ( CASE WHEN '第一个字段名' IS NOT NULL THEN '第一个字段名'ELSE '第二个字段名 'END ) AS plantName, plant_name, fourth_name indu_market_price 效果明显可看出 ,[nvcClientName] ,[chRegionCode] ,isnull(chUltimateHeadClientCode,[chClientCode]) as chUltimateHeadClientCode FROM [PwCMDM_V1].[Core].[tblClien...
在oracle、ms sql 、my sql 中,判断是否为 ,为 则替换为其他字符的函数不一样,这里分别 举一下 功能为:如果第一个value为null,则返回第二个value // my sql select ifnull(null,'my sql ') select ifnull(c_name,'没有名字') // ms sql select isnull(null,'ms sql ') select isnull(c_name,'没有名字') // oracle select nvl(null,'oracle
SELECT ( CASE WHEN name is not null THEN name ELSE (select name form user1 where id = 1) END) AS name user2
<if test="plantNameList.size > 0"> and (m.plant_name in <foreach collection="plantNameList" index="index" item="plantName" open="(" separator="," close=")"> #{plantName} </foreach> or m.fourth_name in <foreach colle.
目标:如果col1为 col2的值,如果col2也为 col3的值,如果col3还为则 col4的值,如果四个字段均为 默认值 1.数据准备 create multiset table test1 col_type varchar(20), col1 varchar(10), col2 varchar(20), col3 varchar(30), col4 v...
其中,condition1、condition2等是条件表达式,result1、result2等是对应的结果。如果所有条件都不满足,则返回默认结果default_result。 ### 回答2: SQL 中的 CASE WHEN THEN 语句用于在查询结果中根据条件返回不同的值。它是一个非常强大和灵活的工具,可以用来实现一系 的状态、过滤和其他操作。语法如下: WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionn THEN resultn ELSE elseresult 它的基本构成部分是 ` CASE `,后跟多个 `WHEN` 分支和一个 `ELSE` 分支。当 ` CASE ` 满足一个 `WHEN` 分支的条件 ,它就会返回该分支对应的结果。如果没有任何 `WHEN` 分支被满足,它会返回 `ELSE` 分支的结果。如果没有指定 `ELSE` 分支,则返回 `NULL`。 每个 `WHEN` 分支由一个条件 `condition` 和一个结果 `result` 组成。当 `condition` 成立 ,`result` 就会被返回。如果 `condition` 不成立,则会检查下一个 `WHEN` 分支,直到找到一个满足条件的 `result` 或到达 `ELSE` 分支为止。 例如,下面的查询使用 ` CASE ` 语句根据员工的工资级别将员工分组: SELECT WHEN salary < 50000 THEN '低薪' WHEN salary < 100000 THEN '中薪' ELSE '高薪' END AS salary_level, COUNT(*) AS num_employees FROM employee GROUP BY salary_level; 在这个查询中,当工资小于 50000 ,员工被分为“低薪”组;当工资介于 50000 和 100000 之间 ,员工被分为“中薪”组;否则,员工被分为“高薪”组。最终,这个查询会返回每个工资级别的员工数量。 总的来说,` CASE WHEN THEN` 语句是 SQL 中一个非常灵活和实用的工具,可以用来实现复杂的逻辑和操作。熟练掌握它可以让 SQL 查询更加精细和高效。 ### 回答3: SQL 中的 CASE WHEN THEN语句用于根据条件在查询语句中进行逻辑判断并生成新的 。 其基本语句为: WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE default result 其中,condition是条件表达式,result是对应的结果表达式,ELSE可以指定默认结果,当条件都不满足 ,返回默认结果。一个 CASE 语句中可以有多个WHEN语句,对应多个条件,如果满足某个条件,返回对应的结果。 有一个产品表,其中有产品编号、名称、价格和销量。现在需要查询产品的名称、单价和总价格(销量*单价),对于销量大于1000的产品,单价打9折。 语句如下: SELECT name, price, CASE WHEN sales > 1000 THEN price * 9 * sales ELSE price * sales END total_price FROM product; 上述语句中用 CASE WHEN判断条件,满足销量大于1000,则将单价乘以9折之后再乘以销量得到总价;否则直接将单价乘以销量得到总价。可以看到, CASE WHEN THEN语句能够在查询语句中方便地进行条件判断,并根据不同的条件生成对应的 ,对于一些需要根据条件动态计算的数据分析任务非常有用。