暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql if case 语句自定义函数

知识追寻者 2021-11-05
1158

IF 表达式

IF(expr1,expr2,expr3)

说明:如果 exp1 表达式为真,则返回true, 否则返回false;

示例

-- 输出为 真
select if('1=1',"真","假")
-- 输出为 假
select if('0=1',"真","假")


IFNULL 表达式

IFNULL( expr1 , expr2 )

说明: 如果expr1不为空,直接返回expr1,否则返回 expr2 ;

示例

-- 输出为空空
select IFNULL(null,"空空")
-- 输出为不空
select IFNULL('不空',"空空")

NULLIF 表达式

NULLIF(expr1,expr2)

使用情况较少;

说明:如果 expr1 等于 expr2 返回null ;否则返回 expr1

-- 输出null
select NULLIF('1','1')
-- 输出 2
select NULLIF('2','1')

simple case 语句

能简单得实现 if -else 语句

语法格式

CASE  value
    WHEN  [compare_value] THEN  result
    [WHEN [compare_value] THEN  result ...] 
    [ELSE  result]  END

示例

-- 输出 是1啊
select (case 1 when 1 then "是1啊" when 2 then "是2啊" end)
-- 输出 是2啊
select (case 2 when 1 then "是1啊" else  "是2啊" end)


searched case 语句

语法格式

CASE
    WHEN [condition] THEN result
    [WHEN [condition] THEN result ...]
    [ELSE result]  END

示例

-- 输出 1小于2
select (case  when 1<2 then "1小于2" else  "1不小于2" end)

函数

函数不同于存储过程;其返回值只有一个

语法格式

create function 函数名([形参列表]) returns 数据类型 -- 规定要返回的数据类型
begin
-- 函数体
-- 返回值: return 类型(指定数据类型);
end

示例

 delimiter $$
 create function fun_test(into_year int
  returns varchar(255
 begin
  declare out_value varchar(255);
  if (into_year < 2021) then 
   set out_value = "输入年份小于2021";
  elseif (into_year = 2020) then
    set out_value = "输入年份等于2021";
  else 
   set out_value = "输入年份大于2021";
  end if;
  return out_value;
 end$$
 delimiter;

查询示例

-- 使用
select fun_test(2022)
--
输入年份大于2021

  • delimiter 表示 为确定得语句,否则有可能导致声明变量报错,并且使用分割符号 $$ 作为标识;

  • declare 表示声明变量

declare 语法格式

declare var [, ...] varType [defualt initVal];

  • 赋值方式 可以通过 select into 语法 或者 set 语法赋值

set 语法示例

set @varName = val;  //将 val 赋值给变量@varName
set @varName := val; //将 val 赋值给变量@varName

select into 语法格式

select filed1 [, ...] into var1 [, ...] from tableName where conditon

具体得其loop,while 等语句可以参考存储过程示例https://zszxz.com/article/55

  • 查看函数定义
show create function functionName;

  • 删除函数定义
drop function [if exists] functionName


文章转载自知识追寻者,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论