mysql if case 函数,自定义函数

540 阅读1分钟

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 等语句可以参考存储过程示例zszxz.com/article/55

  • 查看函数定义
show create function functionName;
  • 删除函数定义
drop function [if exists] functionName

\