SQL中CASE使用
作者 佚名技术
来源 数据库编程
浏览
发布时间 2012-03-22
今天在项目中有一问题,在网上查询了case的用法,帖出来和大家分享下。 问题描述:在一张表中有一字段bit类型,表示此条数据是否被锁定,在页面上有一按钮是对此条数据进行锁定和解锁的,选择页面中的数据,点击这个按钮,如果这条数据是锁定的,就解锁;如果是未说定的就锁定,这样就用一条语句来实现。后来想到以前使用过sql中的case语句能实现这种功能。查询了一下,果然好用,呵呵..... CASE 计算条件列表并返回多个可能结果表达式之一。 CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。 CASE 搜索函数计算一组布尔表达式以确定结果。 两种格式都支持可选的 ELSE 参数。 语法 简单 CASE 函数: CASE input_exPRession WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression END CASE 搜索函数: CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression END 参数 input_expression 是使用简单 CASE 格式时所计算的表达式。Input_expression 是任何有效的 Microsoft? SQL Server? 表达式。 WHEN when_expression 使用简单 CASE 格式时 input_expression 所比较的简单表达式。When_expression 是任意有效的 SQL Server 表达式。Input_expression 和每个 when_expression 的数据类型必须相同,或者是隐性转换。 n 占位符,表明可以使用多个 WHEN when_expression THEN result_expression 子句或 WHEN Boolean_expression THEN result_expression 子句。 THEN result_expression 当 input_expression = when_expression 取值为 TRUE,或者 Boolean_expression 取值为 TRUE 时返回的表达式。result expression 是任意有效的 SQL Server 表达式。 ELSE else_result_expression 当比较运算取值不为 TRUE 时返回的表达式。如果省略此参数并且比较运算取值不为 TRUE,CASE 将返回 NULL 值。Else_result_expression 是任意有效的 SQL Server 表达式。Else_result_expression 和所有 result_expression 的数据类型必须相同,或者必须是隐性转换。 WHEN Boolean_expression 使用 CASE 搜索格式时所计算的布尔表达式。Boolean_expression 是任意有效的布尔表达式。 结果类型 从 result_expressions 和可选 else_result_expression 的类型集合中返回最高的优先规则类型。有关更多信息,请参见数据类型的优先顺序。 以上是sql server帮助中的关于case的信息,下面来一个实例帮助理解: if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[db_case_user]'') and OBJECTPROPERTY(id, N''IsUserTable'') = 1) drop table [dbo].[db_case_user] GO CREATE TABLE [dbo].[db_case_user] ( [id] [int] IDENTITY (1, 1) NOT NULL , [name] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL , [lock] [bit] NULL ) ON [PRIMARY] GO insert into db_case_user (name, lock) values (''张三'', 0) insert into db_case_user (name, lock) values (''李四'', 1) insert into db_case_user (name, lock) values (''王五'', 0) insert into db_case_user (name, lock) values (''赵六'', 0) 现在更新数据库中所有人的lock字段,lock为0的更新成1,为1的更新成0。 update db_case_user set lock=( CASE lock WHEN 1 THEN 0 WHEN 0 THEN 1 END ) |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: MySQL受影响?欧盟反对甲骨文收购SUN下一篇: MSSQL数据库嵌套存储过程的事务控制
关于SQL中CASE使用的所有评论