国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL中CASE使用

2019-11-03 08:36:06
字體:
來源:轉載
供稿:網友
今天在項目中有一問題,在網上查詢了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
        )
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 门源| 依兰县| 乳山市| 通渭县| 金山区| 砀山县| 响水县| 苏尼特左旗| 横山县| 深圳市| 潍坊市| 凉山| 澎湖县| 冀州市| 密山市| 清苑县| 巴彦县| 淮南市| 陆川县| 东乡县| 西平县| 肥乡县| 同心县| 西乌珠穆沁旗| 长垣县| 邛崃市| 松阳县| 庆元县| 洱源县| 崇阳县| 平果县| 盐山县| 河曲县| 河间市| 沿河| 左权县| 托克托县| 洪泽县| 黑水县| 承德市| 林西县|