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
\