加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_常德站长网 (https://www.0736zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql function函数语法

发布时间:2022-09-27 13:16:08 所属栏目:MySql教程 来源:
导读:  delimiter

  在mysql的命令行操作中的作用:指定一个符号为一条SQL 语句的结束,默认为分号。一条SQL语句结束时会立即执行MySQL 函数,而procedure与function中存在分号,所以定义procedure与function之前
  delimiter
 
  在mysql的命令行操作中的作用:指定一个符号为一条SQL 语句的结束,默认为分号。一条SQL语句结束时会立即执行MySQL 函数,而procedure与function中存在分号,所以定义procedure与function之前,需要先修改此符号。如:delimiter //
 
  变量
 
  变量名为‘@xxx’形式,不需声明,可直接使用,默认值为NULL(但procedure或函数中的局部变量名不带@,且需要声明,格式:declare 变量名 datatype。但procedure或函数等结构体中也能直接使用’@xxx’形式的变量,且可在外部访问到)
 
  SET指令
 
  变量进行赋值
 
  删除函数
 
  drop function if exists fn_name;
  明确指明函数的类型
 
  为function指定一个参数。 DETERMINISTIC, NO SQL 和 READS SQL DATA 相当于明确的告知MySQL服务器这个函数不会修改数据
 
  1 DETERMINISTIC 确定的
 
  2 NO SQL 没有SQl语句,当然也不会修改数据
 
  3 READS SQL DATA 只是读取数据,当然也不会修改数据
 
  4 MODIFIES SQL DATA 要修改数据
 
  5 CONTAINS SQL 包含了SQL语句
 
  示例
 
  delimiter $$
  CREATE FUNCTION `fn_cutAppName`(appName varchar(4000)) RETURNS varchar(4000) CHARSET utf8mb4
      DETERMINISTIC
  begin
      DECLARE ret varchar(4000);
      case when (appName like '%护照号%' or appName like '%身份证号%') then
          set @leftindex= LOCATE('(',appName);
   if (@leftindex =0) then set @leftindex = LOCATE('(',appName); end if;
   if (@leftindex =0) then set @leftindex = LOCATE('护照号',appName); end if;
   if (@leftindex =0) then set @leftindex = LOCATE('身份证号',appName); end if;
  mysql decode 函数_MySQL 函数_mysql有decode函数吗
 
 
          case when (@leftindex >0) then set ret = trim(left(appName,(@leftindex-1)));
          else set ret = appName ;
          end case;
   else
   set ret = appName;
      end case;
      return (select ret);
  end
  end $$
  调用函数
 
  select fn_cutAppName('无限责任公司');
 

(编辑:应用网_常德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!