mysql if 和 case when 用法 多个when情况用一个语句 存储过程
在实际开发中,经常会用到 if 和 case when的用法,记录一下,以后可以用得到.
DELIMITER $$
USE
`数据库`$$
DROPPROCEDUREIFEXISTS
`GetNoticemsg`$$
CREATE
DEFINER=`root`@`%`
PROCEDURE
`GetNoticemsg`(p_Id
VARCHAR
(64),p_InTime
DATETIME
,p_FunctionId
INT
,p_PersonType
INT
,p_GetType
INT
)
BEGIN
-- GetType 0:获取已发通知,1获取已收通知 -- PersonType 0:家长 1:老师
IF
(p_GetType=0)
THEN
-- 获取已经发送的
IF
(p_PersonType=1)
THEN
-- 如果是老师 (那么就是查询一张表就OK了,只需要查询主表)
CASEWHEN
p_FunctionId=101
THEN
-- 作业
SELECT
'这里写你的代码';
WHEN
p_FunctionId
IN
(102,103,105,106)
THEN
-- 多个情况用一个语句
SELECT
'这里写你的代码';
ENDCASE
; -- else -- 如果是家长,因为家长不可能发送任何通知,所以这里什么都不返回
ENDIF
; ELSEIF(p_GetType=1)
THEN
-- 获取已经收到的通知
IF
(p_PersonType=1)
THEN
-- 如果是老师,老师只能收到 通知老师103的通知,其他的都收不到
CASE
p_FunctionId
WHEN
103
THENSELECT
'这里写你的代码';
ENDCASE
;
ELSE
--
CASEWHEN
p_FunctionId=101
THENSELECT
'这里写你的代码';
WHEN
p_FunctionId
IN
(102,105,106)
THEN
-- 多个情况用一个语句
SELECT
'这里写你的代码';
ENDCASE
;
ENDIF
;
ENDIF
;
mysql if 和 case when 用法 多个when情况用一个语句 存储过程的更多相关文章
- oracle中DECODE与CASE的用法区别
对于CASE与DECODE其实并没有太多的区别,他们都是用来实现逻辑判断.Oracle的DECODE函数功能很强,灵活运用的话可以避免多次扫描,从而提高查询的性能.而CASE是9i以后提供的语法,这个 ...
- MySQL中的case when 中对于NULL值判断的坑
sql中的case when 有点类似于Java中的switch语句,比较灵活,但是在Mysql中对于Null的处理有点特殊 Mysql中case when语法: 语法1: CASE case_val ...
- Mysql coalesce()函数认识和用法
Mysql coalesce()函数认识和用法 coalesce()解释:返回参数中的第一个非空表达式(从左向右): 鉴于在mysql中没有nvl()函数, 我们用coalesce()来代替 ...
- Oracle CASE WHEN 用法介绍
1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索 ...
- mysql中INSTR函数的用法
mysql中INSTR函数的用法 INSTR(字段名, 字符串) 这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始) SELECT * FROM tblTo ...
- Oracle CASE WHEN 用法介绍[Z]
Oracle CASE WHEN 用法介绍 1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ...
- mysql语法之case when then与列转行
mysql语法中case when then与列转行的使用场景非常丰富. case语句类似java中条件分支语句的作用,可以类比java中的switch语句或者if语句来学习. 其语法如下: case ...
- oracle case when 用法
原文:http://www.cnblogs.com/eshizhan/archive/2012/04/06/2435493.html 1. CASE WHEN 表达式有两种形式 --简单Case函数 ...
- MySQL中INSERT的一般用法
原文链接:http://www.blogjava.net/midnightPigMan/archive/2014/12/15/421406.html MySQL中INSERT的一般用法 INSERT语 ...
随机推荐
- RabbitMQ学习(1):安装
1.安装 Erlang,官网:https://www.erlang.org/ 2.安装RabbitMQ服务器,rabbitMQ server,官网http://www.rabbitmq.com/ 注: ...
- Sublime text 取消记住上一次打开的,这功能太墨迹了!
比较恨,这sublime text的配置全部都是配置文件. 选择菜单:Preferences->Settings-User,增加配置项 //热退出,其实实现一种模拟没有退出的状态,当程序再次启动 ...
- unity3d GameObject.Find 严格区分大小写的
GameObject.Find 查找 static function Find (name : string) : GameObject Description描述 Finds a game obje ...
- HDU 1102 Constructing Roads(最小生成树,基础题)
注意标号要减一才为下标,还有已建设的路长可置为0 题目 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<str ...
- mysql字段的适当冗余有利于提高查询速度
CREATE TABLE `comment` ( `c_id` int(11) NOT NULL auto_increment COMMENT '评论ID', `u_id` int(11) NOT ...
- C语言复习笔记-17种小算法-解决实际问题
判断日期为一年中的第几天(考虑闰年) 1 /* 2 * 计算该日在本年中是第几天,注意闰年问题 3 * 以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天 4 * 特殊情况,闰年且 ...
- 利用纯真ip地址库 查询 ip所属地
1. 首先下周数据源,选择是纯真数据库:http://www.cz88.net/ 2. 安装后,打开软件,将数据导出为txt格式. 3. 处理数据,参照网上的文章(http://www.jb51.ne ...
- 在VS2012后的版本中做数据报表时,提示尚未指定报表“Report1”的报表定义
有一群的朋友在用VS2012做数据报表时,老是提示 本地报表处理期间出错. 尚未指定报表“Report1”的报表定义 未将对象引用设置到对象的实例. 我看了一下,步骤没错,我用VS2010做了一下,一 ...
- Spring的父子容器问题
在ssm框架搭建的时候 配置了一个Spring容器,又配置了一个前端控制器 <!-- 初始化spring容器 --> <context-param> <param-nam ...
- 259. 3Sum Smaller
题目: Given an array of n integers nums and a target, find the number of index triplets i, j, k with 0 ...