在移动广告业务中,设备基本上分成两大阵营:安卓和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语句能够在查询语句中方便地进行条件判断,并根据不同的条件生成对应的
列
,对于一些需要根据条件动态计算的数据分析任务非常有用。