SQL之 case when then
视图查询中怎样将原定于如性别sex 这样的字段,字段值为0,1这样的int类型值,查询时直接返回varchar
型的字符‘男’,‘女’以便于我们读取呢?
有人会想到if …else…这样的语句,可是怎么加,都不知道加哪里,因为总是会出错。其实sql中有一个函数能解决这样的查询读取值的问题。那就是下
面要介绍的 Case 函数了。
Case 是计算条件列表并返回多个可能的结果表达式之一。
Case 有两种格式:
简单 Case 函数将某个表达式与一组简单表达式进行比较以确定结果。
Case 搜索函数计算一组布尔表达式以确
定结果。
两种格式均支持可选的 ELSE 参数。
语法
1. CASE
input_expression
WHEN
when_expression
THEN
result_expression
[
...n
] [ELSE else_result_expression
] END
2. CASE
WHEN
Boolean_expression
THEN
result_expression
[ ...n
] [
ELSE else_result_expression
] END
例子
1.语法实例:
SELECT Name,Age,CASE Gender WHEN 1 THEN '女' WHEN 2 THEN '男' ELSE
'未填' END AS Genders from dbo.Contacter_Detail
2. 语法实例:
SELECT Name,Age,CASE WHEN Gender = 1 THEN '女' WHEN .Gender = 2
THEN '男' ELSE '未填' END AS Genders,
from dbo.Contacter_Detail
两者返回的结果是一样。很简单,一定记住后面表达式后面有个END结尾呢!
相关文档:
转自:http://tech.ddvip.com/2007-05/117955341625057.html
检查各种变化
我在设计数据库的时候会考虑到哪些数据字段将来可能会发生变更。比方说,姓氏就是如此(注意是西方人的姓氏,比如女性结婚后从夫姓等)。所以,在建立系统存储客户信息时,我倾向于在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止 ......
--8-1
USE Northwind
SELECT * from ::fn_dblog('', '')
GO
--8-2
USE Northwind
SELECT * from ::fn_dblog('', '') WHERE [Begin Time] >= '02/01/07'
GO
--9-1
SELECT *
from master.dbo.sysprocesses
--9-2
SELECT *
from sys.dm_exec_requests
--9-3
DECLARE @Handle varbinary(64);
SEL ......
SELECT * from ALL_SOURCE
where TYPE='PROCEDURE' AND TEXT LIKE
'%0997500%';
--查询ALL_SOURCE中,(脚本代码)内容与0997500模糊匹配的类型为PROCEDURE(存储过程)的信息。
根据GROUP
BY TYPE
该ALL_SOURCE中只有以下5种类型
1 FUNCTION
2 JAVA
SOURCE
3 PACKAGE
4 P ......