SQL Server判断语句(IF ELSE/CASE WHEN )

SQL Server的IF ELSE与CASE WHEN判断语句
本文介绍了SQL Server的判断语句IF ELSE和CASE WHEN THEN ELSE END。IF ELSE不能用在SELECT中,只能用于代码块;而CASE WHEN THEN ELSE END可以在SELECT中使用,且要以END结尾。还给出了两种语句的执行顺序及示例代码。

SQL Server判断语句(IF ELSE/CASE WHEN )

执行顺序是 – 从上至下 – 从左至右 --,所当上一个条件满足时(无论下面条件是否满足),执行上个条件,当第一个条件不满足,第二个条件满足时,执行第个二条件


1、IF ELSE

不能用在SELECT中,只能是块,比如:

IF …

BEGIN

…(代码块

END

ELSE (注意这里没有ELSE IF,要实现只能在下面的块中用IF判断

BEGIN

…(代码块

END

列:

  • declare @num int --定义变量
    set @num=1 --赋值变量
    if(@num>10)
    begin
    select * from 表1
    end
    else
    begin
    if(@num<0)
    select Top(20) * from 表2
    else
    print @num
    end

2、CASE WHEN THEN ELSE END

可以在SELECT中使用,但是要包括END结尾

CASE …

WHEN … (条件/代码块) THEN …(返回值/case when then else end

ELSE …(可省略

END

列:

  • declare @num int --定义变量
    set @num=111 --赋值变量
    select @num,
    case
    when @num<=100 then case
    when @num>=80 then ‘A’
    when @num>=60 then ‘B’
    else ‘C’ end
    when @num>=200 then ‘优秀’
    else ‘haha’
    end
SQL Server 的 `CASE WHEN` 语句中,`THEN` 是一个关键组成部分,用于定义在特定条件满足时返回的结果值。`CASE WHEN` 语句是一个条件表达式,允许根据不同的条件返回不同的值。`THEN` 关键字紧跟在 `WHEN` 条件之后,用于指定当该条件为真时应返回的表达式。 ### 用法详解 #### 简单 `CASE` 表达式 简单 `CASE` 表达式将一个表达式与多个可能的值进行比较。它的基本语法如下: ```sql CASE expression WHEN value1 THEN result1 WHEN value2 THEN result2 ... [ELSE else_result] END ``` 在这种情况下,`expression` 会依次与每个 `WHEN` 子句中的 `value` 进行比较。如果找到匹配的 `value`,则返回对应的 `THEN` 后面的 `result`。如果没有匹配项,并且存在 `ELSE` 子句,则返回 `else_result`;如果不存在 `ELSE` 子句,则返回 `NULL`。 例如,以下查询将根据 `SPECIAL_TYPE` 字段的不同值返回相应的字符串: ```sql SELECT CASE SPECIAL_TYPE WHEN '1' THEN '06' WHEN '2' THEN '07' WHEN '3' THEN '02' WHEN '4' THEN '04' WHEN '5' THEN '05' ELSE '其他' END AS SpecialTypeDescription FROM SomeTable; ``` 此查询中,如果 `SPECIAL_TYPE` 的值为 `'1'`,则返回 `'06'`;如果为 `'2'`,则返回 `'07'`,依此类推。如果没有匹配的值,则返回 `'其他'` [^3]。 #### 搜索 `CASE` 表达式 搜索 `CASE` 表达式允许使用更复杂的布尔表达式来决定返回哪个结果。它的基本语法如下: ```sql CASE WHEN boolean_expression1 THEN result1 WHEN boolean_expression2 THEN result2 ... [ELSE else_result] END ``` 在这种情况下,每个 `WHEN` 子句包含一个布尔表达式。如果布尔表达式为真,则返回对应的 `THEN` 后面的 `result`。如果没有布尔表达式为真,并且存在 `ELSE` 子句,则返回 `else_result`;如果不存在 `ELSE` 子句,则返回 `NULL`。 例如,以下查询将根据 `审核` 字段的不同值返回不同的状态描述: ```sql SELECT CASE WHEN 审核 = '否' THEN '终止' WHEN 审核 = '是' THEN '完成' ELSE '审批中' END AS 审批状态 FROM SomeTable; ``` 此查询中,如果 `审核` 的值为 `'否'`,则返回 `'终止'`;如果为 `'是'`,则返回 `'完成'`。如果没有匹配的值,则返回 `'审批中'` [^2]。 ### `THEN` 的作用 `THEN` 关键字在 `CASE WHEN` 语句中的作用是明确指定当某个条件满足时应该返回的结果。它是 `CASE` 表达式的一部分,用于将条件与结果关联起来。在 `CASE` 表达式的每个分支中,`THEN` 后面必须跟一个表达式,该表达式可以是常量、列名、函数或其他有效的 SQL 表达式。 ### 常见错误 在使用 `CASE WHEN` 语句时,常见的错误之一是忘记使用 `THEN` 关键字,或者在 `THEN` 后面没有提供有效的表达式。例如,在 Oracle 中,如果 `CASE WHEN` 语句缺少 `THEN` 或 `END` 关键字,会导致语法错误 [^4]。 ### 示例代码 以下是一个完整的示例,展示如何在 SQL Server 中使用 `CASE WHEN` 语句: ```sql SELECT EmployeeID, Name, CASE WHEN Salary > 10000 THEN 'High' WHEN Salary BETWEEN 5000 AND 10000 THEN 'Medium' ELSE 'Low' END AS SalaryLevel FROM Employees; ``` 此查询中,根据 `Salary` 字段的值,返回不同的薪资等级。如果 `Salary` 大于 10000,则返回 `'High'`;如果在 5000 到 10000 之间,则返回 `'Medium'`;否则返回 `'Low'` [^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值