Sql sever中的CASE语句
来源:互联网 发布:js随机生成字母和数字 编辑:程序博客网 时间:2024/06/04 18:49
CASE 具有两种格式:
第一种:
Simple CASE function: CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
第二种:
Searched CASE function:
CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
A. 使用带有简单 CASE 函数的 SELECT 语句
在 SELECT 语句中,简单 CASE 函数仅检查是否相等,而不进行其他比较。以下示例使用 CASE 函数更改产品系列类别的显示,以使这些类别更易理解。
USE AdventureWorks;
GO
SELECT ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END,
Name
FROM Production.Product
ORDER BY ProductNumber;
GO
B. 使用带有简单 CASE 函数和 CASE 搜索函数的 SELECT 语句
在 SELECT 语句中,CASE 搜索函数允许根据比较值在结果集内对值进行替换。下面的示例根据产品的价格范围将标价显示为文本注释。
USE AdventureWorks;
GO
SELECT ProductNumber, Name, 'Price Range' =
CASE
WHEN ListPrice = 0 THEN 'Mfg item - not for resale'
WHEN ListPrice < 50 THEN 'Under $50'
WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
ELSE 'Over $1000'
END
FROM Production.Product
ORDER BY ProductNumber ;
GO
以上内容来自Sql server 2005帮助文档
其他Case语句实例:
USE pubs GO SELECT Title, 'Price Range' = CASE WHEN price IS NULL THEN 'Unpriced' WHEN price < 10 THEN 'Bargain' WHEN price BETWEEN 10 and 20 THEN 'Average' ELSE 'Gift to impress relatives' END FROM titles ORDER BY price GO |
这是 CASE 的典型用法,但是使用 CASE 其实可以做更多的事情。比方说下面的 GROUP BY 子句中的 CASE:
SELECT 'Number of Titles', Count(*) FROM titles GROUP BY CASE WHEN price IS NULL THEN 'Unpriced' WHEN price < 10 THEN 'Bargain' WHEN price BETWEEN 10 and 20 THEN 'Average' ELSE 'Gift to impress relatives' END GO |
你甚至还可以组合这些选项,添加一个 ORDER BY 子句,如下所示:
USE pubs GO SELECT CASE WHEN price IS NULL THEN 'Unpriced' WHEN price < 10 THEN 'Bargain' WHEN price BETWEEN 10 and 20 THEN 'Average' ELSE 'Gift to impress relatives' END AS Range, Title FROM titles GROUP BY CASE WHEN price IS NULL THEN 'Unpriced' WHEN price < 10 THEN 'Bargain' WHEN price BETWEEN 10 and 20 THEN 'Average' ELSE 'Gift to impress relatives' END, Title ORDER BY CASE WHEN price IS NULL THEN 'Unpriced' WHEN price < 10 THEN 'Bargain' WHEN price BETWEEN 10 and 20 THEN 'Average' ELSE 'Gift to impress relatives' END, Title GO |
注意,为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块。
这部分内容来自: http://database.ctocio.com.cn/tips/76/7000576.shtml
注意:Simple CASE Function不能用来判断null值.
如果 case 表达式1 null then 0 else 表达式2, 它永远是执行表达式2,即使表达式1的值是null
应该这样写: case when 表达式1 is null then 0 else 表达式,
- Sql sever中的CASE语句
- SQL语句中的CASE
- sql 语句中的CASE 用法
- SQL中的CASE WHEN语句
- SQL中的CASE WHEN语句
- SQL SEVER Case 的使用
- SQL sever 循环语句
- sql sever经典语句
- SQL SEVER数据库中的增删查改语句
- SQL查询语句中的条件判断CASE
- sql中的case when 语句详解
- sql语句中的条件控制 case ..when.
- SQL中的coalesce函数与case语句
- case语句在SQL中的使用方法
- sql语句中的条件控制 case ..when
- proc sql 语句中的case 表达
- sql语句中的case、while等使用
- sql语句中的case when用法
- 使用ping机制解决原创文章被高权重采集网站优先收录问题
- GridView的事件
- 无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.TextBox”的解决方法
- 用dropdownlist控制gridview某个单元格的显示与否
- ASP.NET 页面间传递参数的方法
- Sql sever中的CASE语句
- Page.IsPostBack属性
- 正则表达式
- 二叉树的非递归中序遍历
- sql sever经典语句
- select case语句
- sql sever中的set nocount选项
- sql sever中如何将一列修改为自增长列
- 提高.NET网站性能