All articles(网络文学目录) All Pictures(图片目录) All Softwares(软件目录)

 
SQL中CASE使用_mssql学习_编程技术

Writer: delv Article type: Programming skills(编程技巧) Time: 2013/12/30 4:38:40 Browse times: 371 Comment times: 0

SQL中CASE使用_mssql学习_编程技术


Head photo

Go homepage
Upload pictures
Write articles

SQL中CASE使用_mssql学习_编程技术-你的首页-uuhomepage.com今天在项目中有一问题,在网上查询了case的用法,帖出来和大家分享下。 问题描述:在一张表中有一字段bit类型,表示此条数据是否被锁定,在页面上有一按钮是对此条数据进行锁定和解锁的,选择页面中的数据,点击这个按钮,如果这条数据是锁定的,就解锁;如果是未说定的就锁定,这样就用一条语句来实现。后来想到以前使用过sql中的case语句能实现这种功能。查询了一下,果然好用,呵呵.....CASE计算条件列表并返回多个可能结果表达式之一。 CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。 CASE 搜索函数计算一组布尔表达式以确定结果。 两种格式都支持可选的 ELSE 参数。 语法简单 CASE 函数:CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ENDCASE 搜索函数: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]GOCREATE 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]GOinsert 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 )




There are 0 records,
Comment:
Must be registered users to comment(必须是注册用户才能发表评论)

Disclaimer Privacy Policy About us Site Map
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.