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)
相关文档:
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列
......
/*--text字段的替换处理
--*/
--创建数据测试环境
--create table #tb(aa text)
declare @s_str varchar(8000),@d_str varchar(8000), --定义替换的字符串
......
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):
ORACLE的解析器按照从右到左的顺序处理from子句中的表名,from子句中写在最后的表(基础表 driving table)将被最先处理,在from子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那 ......
Private Sub CommandButton1_Click()
Worksheets("Sheet2").Select
Cells.Select
Selection.Delete Shift:=xlUp
Range("A1").Select
'清除在Excel中的数据,确保导入信息不出现与原Excel数据进行叠加
Dim cnnConnect As Object
Dim rstR ......
有时候,在工作中会遇到将一个数据库中表的数据导到另一个数据库的表中,但是工具又没有提供这样的功能
下面能通过SQL语句生成Insert语句,再插入到另一个数据库中。
MSSQL:
SELECT 'INSERT INTO StatInfo(UserName,CardId,Address,WageCount,Pension)'+
' VALUES('''+a.UserName+''','''+a.CardId+''','''+a.Ad ......