SQL语言的CASE使用总结
转自http://lavasoft.blog.51cto.com/62575/23373
SQL语言的CASE语句备忘
概述:
SQL语句中的CASE语句与高级语言中的switch语句,是标准SQL的语法,适用与一个条件判断有多种值的情况下分别执行不同的操作。灵活应用CASE语句可以使SQL语句变得简洁易读,下面在DB2环境下通过一个简单的查询来展示SQL CASE语句的强大功能。
环境:
Windows XP Professional
DB2 V9.1
问题:
有一个行业代码表,建表SQL和数据如下,要求查出代码别名、代码名、行业名、代码长度。代码别名为数字序号与大写英文字母的序号的映射值,比如代码 '01'的别名就是'A','02'的别名就是'B',依次类推。
建表SQL和初始化数据SQL
-------------------------------------
drop table DM_HYML;
create table DM_HYML
(
HYML_DM CHAR(2) not null,
HYML_MC VARCHAR(100) not null,
XYBZ CHAR(1) not null
);
alter table DM_HYML
add primary key (HYML_DM);
comment on table DM_HYML is
'行业门类代码表';
comment on column DM_HYML.HYML_DM is
'行业门类代码';
comment on column DM_HYML.HYML_MC is
'行业门类名称';
comment on column DM_HYML.XYBZ is
'选用标志';
delete from DM_HYML;
insert into DM_HYML (HYML_DM, HYML_MC, XYBZ)
values ('01', '农、林、牧、渔业', 'Y');
insert into DM_HYML (HYML_DM, HYML_MC, XYBZ)
values ('03', '制造业', 'Y');
insert into DM_HYML (HYML_DM, HYML_MC, XYBZ)
values ('02', '采矿业', 'Y');
insert into DM_HYML (HYML_DM, HYML_MC, XYBZ)
values ('04', '电力、燃气及水的生产和供应业', 'Y');
insert into DM_HYML (HYML_DM, HYML_MC, XYBZ)
values ('05', '建筑业', 'Y');
insert into DM_HYML (HYML_DM, HYML_MC, XYBZ)
values ('06', '交通运输、仓储和邮政业', 'Y');
insert into DM_HYML (HYML_DM, HYML_MC, XYBZ)
values ('07', '信息传输、计算机服务和软件业', 'Y');
insert into DM_HYML (HYML_DM, HYML_MC, XYBZ)
values ('08', '批发和零售业', 'Y');
insert into DM_HYML (HYML_DM, HYML_MC, XYBZ)
values ('09', '住宿和餐饮业', 'Y');
insert into DM_HYML (HYML_DM, HYML_MC, XYBZ)
相关文档:
sql在多方摸索和朋友的帮助下,终于可以连接成功,这对我来说是个里程碑来的,在工作的过程中我总是没有机会可以碰触到SQL,当我鼓起勇气勇气想学习的时候我连怎么用都不会,进来终于链接成功,开心地和朋友分享我的成果。
1.安装sql,学习SQl,因为一般我是想要用于VS2005项目的,所以一般最后就先安装VS软件,以便 ......
/*--text字段的替换处理
--*/
--创建数据测试环境
--create table #tb(aa text)
declare @s_str varchar(8000),@d_str varchar(8000), --定义替换的字符串
......
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):
ORACLE的解析器按照从右到左的顺序处理from子句中的表名,from子句中写在最后的表(基础表 driving table)将被最先处理,在from子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那 ......
--监控索引是否使用 alter index &index_name monitoring usage; alter index &index_name nomonitoring usage; select * from v$object_usage where index_name = &index_name;
--求数据文件的I/O分布 select df.name,phyrds,phywrts,phyblkrd,phyblkwrt,singleblkrds,readtim,writetim from v$filestat fs,v ......