首页 > 其他分享 >CASE WHEN语句

CASE WHEN语句

时间:2023-07-14 16:00:38浏览次数:39  
标签:CASE 语句 结果 WHEN SQL 表达式

CASE表达式是SQL中的条件选择语句,用于根据条件选择相应的结果。它类似于其他编程语言中的switch-case语句。

CASE表达式的基本语法有两种:

  1. 条件THEN结果:

CASE WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END

  1. Florida:

CASE input_expression
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END

CASE表达式的主要特点有:

  1. 支持多条件判断:可以根据多个条件选择不同的结果,类似switch-case。

  2. 支持else子句:可以指定默认结果,当所有条件都不满足时返回默认结果。

  3. 支持输入表达式比较:可以使用输入表达式的值与不同条件进行比较,并返回匹配的结果。

  4. 结果不仅限于值:结果可以是值、表达式、SQL语句等。

  5. 支持在所有SQL语句中使用:可以在SELECT、UPDATE、INSERT、DELETE语句中使用CASE表达式。

  6. 条件判断支持各种操作符:可以使用=、<>、>、<、BETWEEN等操作符进行条件判断。

  7. 支持NULL判断:可以使用IS NULL / IS NOT NULL进行NULL值判断。

  8. 结果不一定为列名:结果不必为原表的列名,可以是新的表达式或值。

CASE表达式的示例:

SELECT employee_id,
first_name,
salary,
CASE WHEN salary > 15000 THEN 'High'
WHEN salary > 10000 THEN 'Medium'
ELSE 'Low'
END salary_grade
FROM employees;

UPDATE employees
SET salary =
CASE job_id
WHEN 'IT_PROG' THEN 80000
WHEN 'ST_CLERK' THEN 40000
ELSE 60000
END;

DELETE FROM employees
WHERE department_id =
CASE
WHEN LOCATE('1',department_name) > 0 THEN 10
WHEN LOCATE('2',department_name) > 0 THEN 20
ELSE 30
END;

CASE表达式提供了一种灵活的条件判断和选择机制,可以有效地根据条件选择不同的执行结果。它使得SQL语句的执行结果更加动态和智能化。

要熟练使用CASE表达式,需要理解:

  1. 支持两种基本语法,及其使用场景。

  2. 支持多条件判断和else子句,实现不同条件选择不同结果。

  3. 输入表达式的作用,及其与条件的比较方式。

  4. 结果不限于列名或值,可以是任意表达式或SQL语句。

  5. 支持各种操作符和NULL判断进行条件判断。

  6. 可以使用在所有SQL语句中,根据条件动态计算结果。

  7. 与DECODE函数的区别与联系。DECODE更适用于等值判断,CASE表达式功能更强大。

CASE表达式是SQL语句中一个重要且强大的功能,合理使用它可以简化SQL语句,实现更智能化的执行结果。但如果使用不当,也会导致语句难以理解和维护。要熟练使用CASE表达式,需要在实践中积累丰富的经验,不断掌握新的使用技巧。

CASE表达式是数据库开发人员必不可少的技能,需要在实践中不断练习和运用。只有真正理解其概念,并熟练掌握各种场景下的应用,才能运用自如,写出高质量的SQL语句。这需要不断学习和思考,实践与提高。

标签:CASE,语句,结果,WHEN,SQL,表达式
From: https://www.cnblogs.com/suixingc/p/17553918.html

相关文章

  • verilog task/function 语句
    task模块任务task在模块中任意位置定义,并在模块内任意位置引用,作用范围也局限于此模块。模块内子程序出现下面任意一个条件时,则必须使用任务而不能使用函数。1)子程序中包含时序控制逻辑,例如延迟,事件控制等2)没有输入变量3)没有输出或输出端的数量大于1//任务task定义:如下......
  • verilog 循环语句
    循环语句在VerilogHDL中存在着四种类型的循环语句,用来控制执行语句的执行次数。1)forever连续的执行语句。2)repeat 连续执行一条语句n次。3)while  执行一条语句直到某个条件不满足。如果一开始条件即不满足(为假),则语句一次也不能被执行。4)for通过以下三个步......
  • 分支语句、循环语句
    一、ifelse语句悬空else  else与距离最近的未匹配的if匹配  常量==变量  减少出错机率二、字符串的输入与输出——getcharputchar  (1)   字符串结尾含有“\n” 第一个scanf——“123456” 第二个getchar——“\n”为假 (2) 字符串结尾......
  • Snake Case VS Camel Case VS Pascal Case Vs Kebab Case
    eg. numberofdonuts=34snakecase:Snakecaseseparateseachwordwithanunderscorecharacter(_). Whenusingsnakecase,alllettersneedtobelowercase(UppercaseforConstantvalueorGlobalvalue).number_of_donuts=3kebabcase:  kebabcase......
  • Shell | 循环语句
    for循环基本语法1:for((初始值;循环控制条件;变量变化))do 程序done例子:从1加到100$touchfor1.sh$vimfor1.sh#!/bin/bashsum=0for((i=0;i<=100;i++))dosum=$[$sum+$i]doneecho$sum$chmod777for1.sh$./for1.sh5050基本语法2:for变量in值......
  • Shell | 判断语句
    if判断基本语法:(1)单分支if[条件判断式];then 程序fi或者if[条件判断式]then 程序fi(2)多分支if[条件判断式]then 程序elif[条件判断式]then 程序else 程序fi注意事项:​ ①[条件判断式],中括号和条件判断式之间必须有空格​ ②if后要有空格......
  • python-pymysql-类对象映射为sql语句
    查询语句importpymysqlclassUserQuery:def__init__(self,name=None,age=None,email=None):self.name=nameself.age=ageself.email=emaildefselect_data(table,condition):#连接到数据库connection=pymysql.connec......
  • 使用SQL语句写递归查询
    要编写递归SQL语句,你可以使用通用表达式(CommonTableExpressions,CTE)和递归查询功能。CTE允许在SQL查询中定义临时的命名查询,并且可以在查询内部引用自身。以下是一个示例来演示如何编写递归SQL语句:假设有一个员工表employees,其中包含列id、name和manager_id,表示员工......
  • 机器翻译 | Prompting Large Language Model for Machine Translation: A Case Study
    题目:机器翻译的提示大语言模型:一个案例研究摘要对提示的研究表明,在很少甚至没有监督训练的情况下,提示在许多任务中表现出色。然而,文献中对机器翻译的提示还没有充分的研究。本文对翻译提示策略进行了系统的研究,考察了提示模板和示例选择的各种因素,填补了这一空白。我们进一步......
  • MySql开启日志 --记录每条执行的SQL语句
    --第一条SETGLOBALlog_output='TABLE';SETGLOBALgeneral_log='ON';--在重启mysql重启Mysql详情请看:(10条消息)如何重启MySQL,正确启动MySQL_mysqlrestart_wuyepiaoxue789的博客-CSDN博客--重启完成之后可以去数据库`Mysql`中的general_log表里查看,也可以执行一下的......