超强:SQL命令中的case...when...then...else...end条件查询(不同于where) 与 类型转换的用法
case...when...then...else...end,是在from前面,可以改变记录中某字段的值,不能决定是否显示该记录;
where,是在from后面,不可以改变记录中某字段的值,但可以决定是否显示该记录。
case...when...then...else...end,可用于对同一记录的多个字段求和,带分支判断。
另外,对字段判断和处理,往往需要强制类型转换。
select to_number('19f','xxx') from dual; --八进制
得到 415
select to_number('f','xx') from dual; --十六进制
得到 15
select to_number('123') from dual; --十进制
得到 123
与date操作关系最大的就是两个转换函数:to_date(),to_char()
to_date() 作用将字符类型按一定格式转化为日期类型:
具体用法:to_date('2004-11-27','yyyy-mm-dd'),
前者为字符串,后者为转换日期格式,注意,前后两者要以一对应。如to_date('2004-11-27 13:34:43', 'yyyy-mm-dd hh24:mi:ss') 将得到具体的时间
字符串处理函数:
select to_number(SUBSTR(rain_1,0,2),'xx') from obs
(一)Access 数据库
大家知道在access中有iif函数,能将一个判断赋值序列简化成一个表达式,比如
iif(a>b,1,2),如果确实a>b那么结果给出1,否则就是2。这实在很方便。
示例
(1)数字
如果 Measures.CurrentMember 是空单元,则下面的示例返回 0,否则返回 1
IIf(IsEmpty(Measures.CurrentMember), 0, 1)
(2)字符串
如果Measures.CurrentMember 是空单元,则下面的字符串返回字符串"Yes",否则返回字符串"No"
IIf(IsEmpty(Measures.CurrentMember), "Yes", "No")
在Access中我可以用IIF函数进行统计汇总,比如,要知道实际应该交费的用户个数
Access写法:Select sum(iif(金额>0, 1,0)) as num from 费用
MS SQL写法:select sum(case when 金额>0 then 1 else 0 end) as num from 费用
(二)Ms SQL 数据库
IIF在SQL中是 case when ....then ...else... end
例:select id,case when bz='1' then xx when bz='2' then yy else zz end as tt from xxx
这里我举个例子,有一个表政策法规表(policy_fgxx),有ID(主键)、bzh(标准号)、zynr(主要内容)、
fbrq(发布日期)四个字段
Select * From policy_fgxx 结果:
ID bzh zynr fbrq
13 001 <p>你好</p> 2010-05-07 0:00:00
15 NULL
我不想要上面的结果,我想要下面这个结果:
ID bzh zynr fbrq
13 001 <p>你好</p> 2010-05-07 0:00:00
15 无 1990-06-06 0:00:00
也就是说,标准号为空的时候我想让它显示空,发布日期为null的时候我想让它显示我指定的日期
下面我给出写法,大家可以自己思考
Select id,zynr, (case when bzh='' then '无' else bzh end) AS bzh, (case when fbrq is null then '1982-06-02' else fbrq end) AS fbrq From policy_fgxx
sqlite case when then else end
sqlite> select datetime(CreateTime, 'unixepoch', 'localtime') 时间,Message 内容,case Des when 0 then '乐' else '园' end 名称 from Chat_af863d30e1c1e5eba27a0df37a75dba0 where rowid <= 2; +---------------------+----------+------+ | 时间 | 内容 | 名称 | +---------------------+----------+------+ | 2013-08-22 18:54:13 | 网络不好 | 园 | | 2013-08-22 20:19:07 | 乔乐 | 园 | +---------------------+----------+------+ 2 rows in set
其它网友的实例:
Id name dept
1 aa dept1
2 bb dept1
3 cc dept2
SELECT SUM(CASE decp WHEN 'decp1' THEN 1 ELSE 0 end ) AS decp1,
sum(case decp when 'decp2'then 1 else 0 end)as decp2
FROM teacher
生成:
dept1 dept2
2 1
这个例子主要是学习了(CASE WHEN THEN ELSE end )语句的用法.
在我们做数据统计的时候这是一个非常有用的语句。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 刘德华《劲歌集》24K金碟港版[WAV+CUE][1.2G]
- Faker五冠王什么意思 世界赛五冠王Faker选手介绍
- faker塞拉斯s14决赛什么出装 faker塞拉斯s14决赛出装介绍
- LOLtoc9魔法口令在哪可以找到 2024云顶之弈toc观赛魔法口令兑换码
- 黑鸭子2008《影视经典·珍藏版》试音碟[WAV+CUE]
- 碧娜《温柔吻语2》[WAV+CUE]
- Stravinsky-Symphonies,Volume1-OrquestaSinfonicadeGalicia,DimaSlobodeniouk(2024)[24-
- 外媒评Switch2:向下兼容是关键 但挑战依然存在
- 任天堂提醒:宠物的尿或唾液或会让NS故障 把它放好!
- 《博德3》再创新高 Steam掌机总游玩时长近2000年
- 张玮伽《想你的夜DSD》东升 [WAV+CUE][1G]
- 姚璎格《 粤 24KGOLD》正版低速原抓[WAV+CUE][1G]
- 杨千嬅《如果大家都拥有海》寰亚 [WAV+CUE][998M]
- 孟庭苇.1994-1990-1994钻石精选集2CD(2022环球XRCD限量版)【上华】【WAV+CUE】
- 群星.1998-华纳好情歌精选17首【华纳】【WAV+CUE】