mysql 函数

创建

  • 语法如下
delimiter $$
create function 函数名称(参数列表) returns 返回类型
begin
sql语句
end
$$
delimiter ;
  • 说明:delimiter用于设置分割符,默认为分号
  • 在“sql语句”部分编写的语句需要以分号结尾,此时回车会直接执行,所以要创建存储过程前需要指定其它符号作为分割符,此处使用//,也可以使用其它字符

示例

  • 要求:创建函数py_trim,用于删除字符串左右两侧的空格

  • step1:设置分割符

delimiter $$
  • step2:创建函数
create function py_trim(str varchar(100)) returns varchar(100)
begin
declare x varchar(100);
set x=ltrim(rtrim(str));
return x;
end
$$
  • step3:还原分割符
delimiter ;



查看

  • 所有函数存储在mysql数据库下的proc表中
  • 说明:存储过程与函数都存储在proc表中,区别在type字段,func表中无数据
  • 查看python数据库中的函数
select name,type from mysql.proc where db='python';



调用

  • 语法如下
select 函数名称(参数列表);

示例

  • 要求:调用自定义函数py_trim
select py_trim(' a ');





删除

  • 说明:函数的代码无法修改,如果不能满足要求可以删除后重新创建
  • 语法如下
drop function 函数名称;

示例

  • 要求:删除函数py_trim
drop function py_trim;






变量

  • 声明变量,语法如下
declare 变量名 类型 default 默认值;
例:
declare x varchar(100);
  • 设置变量值,语法如下
set 变量名=值;
例:
set x='abc';
  • 使用变量:将变量写到表达式中,即可调用变量的值

判断

  • 语法如下
if 条件1 then
语句1;
elseif 条件2 then
语句2;
else
语句
end if;




循环

  • 语法如下
while 条件 do
语句;
end while;
  • 退出循环:leave,相当于break
  • 退出本次循环:iterate,相当于continue

示例

  • 要求:定义函数odd,输出1-100间的偶数

  • step1:设置分割符

delimiter $$
  • step2:创建函数
create function odd () returns varchar(300)
begin
declare i int default 1;
declare x varchar(300) default '';
while i<=100 do
if i%2=0 then
set x=concat(x,' ',i);
end if;
set i=i+1;
end while;
return x;
end
$$
  • step3:还原分割符
delimiter ;
  • step4:调用函数
select odd();
原文地址:https://www.cnblogs.com/yoyo1216/p/10129979.html