SQL中的条件判断语句(case when zhen if,ifnull)用法

一、case when then

适用于:sqlserver 和mysql

case具有两种格式。简单case函数和case搜索函数。这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。还有一个需要注重的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。

--简单case函数
case sex
  when ‘1‘ then ‘男‘
  when ‘2‘ then ‘女’
  else ‘其他‘ end

--case搜索函数
case when sex = ‘1‘ then ‘男‘
     when sex = ‘2‘ then ‘女‘
     else ‘其他‘ end

--比如说,下面这段sql,你永远无法得到“第二类”这个结果
case when col_1 in (‘a‘,‘b‘) then ‘第一类‘
     when col_1 in (‘a‘) then ‘第二类‘
     else ‘其他‘ end

示例:

如下users表:

上表结果中的"sex"是用代码表示的,希望将代码用中文表示。可在语句中使用case语句:

如果不希望列表中出现"sex"列,语句如下:

将sum与case结合使用,可以实现分段统计。如果现在希望将上表中各种性别的人数进行统计,sql语句如下:

二、IF表达式

仅适用于:MySQL

IF既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用:

IF(expr1,expr2,expr3)

如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

SELECT IF(sva=1,"男","女") AS s FROM table_name
WHERE sva != ‘‘;

三、IFNULL(expr1,expr2)

仅适用于mysql

假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。

 SELECT IFNULL(1,0);
 -> 1

SELECT IFNULL(NULL,10);
 -> 10

SELECT IFNULL(1/0,10);
-> 10

SELECT IFNULL(1/0,‘yes‘);
-> ‘yes‘

 

四、ISNULL

仅适用于 sqlserver

SELECT ISNULL(null,10)
-> 10
SELECT ISNULL(1,10);
-> 1
SELECT ISNULL(1/1,‘yes‘);
-> 1
SELECT ISNULL(‘abc‘,11)
->abc
SELECT ISNULL(null,‘abc‘)
->abc
SELECT ISNULL(null,2.130)
->2.130
SELECT ISNULL(null,‘哈哈‘)
->哈哈
SELECT ISNULL(‘‘,‘哈哈‘)
->‘‘

五、IF  ELSE

仅适用于 sqlserver

IF 1>0
SELECT 1
ELSE IF 1<0
SELECT 2
ELSE
SELECT 3

相关文档: https://www.yiibai.com/sqlserver/sql-server-if-else.html

下面的用法是错误的:

select
(
IF a.[胸径] != ‘‘
Begin
    Cast([胸径] as float)
End
Else
Begin
   
End
)
from [dbo].[植物标本数据1] as a

正确的方法是使用 case when then

select

(case when [胸径] != ‘‘ and [胸径] is not null then Cast([胸径] as float) else null end) as xj
from [植物标本数据1]

参考资料:

https://www.cnblogs.com/studynode/p/9881900.html

原文地址:https://www.cnblogs.com/hao-1234-1234/p/11466179.html

时间: 09-03

SQL中的条件判断语句(case when zhen if,ifnull)用法的相关文章

Shell中的条件判断语句if~then~fi

Shell中的条件判断语句是前面一篇"Shell中的条件测试语句"的升级篇,也就是说,前面的测试语句是为了现在的判断语句if~then~fi语句服务的. 我们还是按照注意点和代码实现的方式铺开: 1)基本的if-then-fi语句可以用来判断基本的单层的分支结构,其形式如下: 其中if后面的测试语句一般都使用[]命令来做.如下面的例子: #-----------------------------/chapter4/ex4-18.sh------------------ #! /bin

JavaScript 中if条件判断语句

条件语句 在写代码时,经常会需要基于不同判断执行不同的动作: 您可以在代码中使用条件语句来实现这一点. 在 JavaScript 中,我们可使用如下条件语句:1.使用 if 来规定要执行的代码块,如果指定条件为 true:2.使用 else 来规定要执行的代码块,如果相同的条件为 false:3.使用 else if 来规定要测试的新条件,如果第一个条件为 false:4.使用 switch 来规定多个被执行的备选代码块.  if 语句单分支语句,由一个if组成,如果条件成立,则进入代码开始执行

javascript中对条件判断语句的优化

不管写什么程序,平时都会用到条件语句,如:if...else... switch这样的语句,来达到对条件的判断.下面看来一段代码: function abc(test){ if (test == 1){ console.log('test的值是'+test); } else if (test == 2){ console.log('test的值是'+test); } else if (test == 3){ console.log('test的值是'+test); } else if (test

条件判断语句(七)

我们之前说过 makefile 是一种脚本语言程序,那么程序便会有相应的语法.在 makefile 中支持条件判断语句,可以根据条件的值来决定 make 的执行,也可以比较两个不同变量或者变量和常量值.需要注意的是:条件判断语句只能用于控制 make 实际执行的语句:但是,不能控制规则中命令的执行过程.格式如下 条件判断语句的语法如下 那么在 makefile 中都有哪些的条件判断关键呢? 关键字 功能 ifeq 判断参数是否相等,相等为 true,否则为 false ifneq 判断参数是否不

题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)

题目:求1+2+…+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字以及条件判断语句(A?B:C). 分析:这道题没有多少实际意义,因为在软件开发中不会有这么变态的限制.但这道题却能有效地考查发散思维能力,而发散思维能力能反映出对编程相关技术理解的深刻程度. 通常求1+2+…+n除了用公式n(n+1)/2之外,无外乎循环和递归两种思路.由于已经明确限制for和while的使用,循环已经不能再用了.同样,递归函数也需要用if语句或者条件判断语句来判断是继续

js中的if判断语句和switch条件分支语句

语句是js中最重要的成分 本文想介绍的是if判断语句和switch条件分支语句 ---------------------------------------------------------------- if条件判断语句 形式: if(条件判断){ 表达式 } 意思就是,当满足条件判断的句子,执行花括号内的表达式 直接看看有坑的地方 需求:当score为60分以下,控制台打印不及格,当score为60分以上,控制台打印及格,当score为85分以以上,控制台打印优秀 var score =

求 1+2+...+n, 要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句 (A?B:C)。

求 1+2+...+n,要求不能使用乘除法.for.while.if.else.switch.case 等关键字以及条件判断语句 (A?B:C). #include <bits/stdc++.h> using namespace std; int Sum(int n) { int Ret = 0; n == 0 || (Ret = Sum(n-1)); return n + Ret; } class A{ public: A() { sum += ++n; } static int sum;

求1+2+3+...+n的值,要求不能使用乘除法,for、while、if、else、switch、case、等关键字及条件判断语句(JAVA)

采用递归和三目表达式注意红色字体一定不能写成n-- 1 package com.hunag; 2 3 public class Sum { 4 5 static int sum; 6 public static int isum(int n) 7 { 8 sum+=n; 9 sum=n==0?sum:isum(--n); 10 System.out.println(n); 11 return sum; 12 } 13 public static void main(String[] args)

21_Shell语言——条件判断一之执行状态返回值、单分支条件判断语句

一.选择执行语句概述 面向过程的程序其流程控制结构主要有三种:1. 顺序执行:2. 循环执行:3. 选择执行.前文中介绍了循环执行,本章及后续章节将重点介绍选择执行这种结构. 选择执行是指当程序执行过程中如果满足指定条件,就执行其中一部分内容,否则就执行其他内容,即只是有选择性的执行测试条件的相关内容. 现在设想,如果要添加用户user1,可以使用useradd user1来实现.但如果user1用户已经存在了,那么执行useradd user1时就会报错.为了避免这种情况,就需要在执行前先测试