mysql函数使用场景_mysql的函数和存储过程的比较,以及在实际场景中的使用案例...
一.存储过程和函数的区别
函数调用有返回值
存储过程调用用call语句,函数调用直接饮用函数名+参数
IN,OUT,INOUT
只适用于存储过程,对函数而言所有参数默认都是输入参数
IN用于把数值传入到存储过程中
OUT用于输出参数将数值传递给调用者
INOUT输入输出参数把数据传入到存储过程,在存储过程中修改后再传递给调用者
二.存储过程实践
功能:格式化数据
DELIMITER //
CREATE PROCEDURE sieAttendanceService.checkData(IN myId BIGINT, OUT spaceId BIGINT)
SQL SECURITY INVOKER
BEGIN
DECLARE space_num INT DEFAULT 0;
DECLARE temp VARCHAR(50);
DECLARE num_index INT DEFAULT 0;
select count(*) from sie_attendance_external_t t where t.on_time='' and t.off_time='' and t.id > myId into space_num;
while num_index < space_num do
set num_index = num_index + 1;
select id from sie_attendance_external_t t where t.on_time='' and t.off_time='' and t.id > myId into spaceId;
end while;
/*更新供应商编号*/
update sie_attendance_external_t t
set t.company_code = '032128'
where id > myId;
/*去掉空格*/
update sie_attendance_external_t t
set t.staff_name = trim(t.staff_name),
t.staff_id_no = trim(t.staff_id_no),
t.swipe_date = trim(t.swipe_date),
t.on_time = trim(t.on_time),
t.off_time = trim(t.off_time)
where t.id > myId;
/*将?替换成空*/
update sie_attendance_external_t t
set t.staff_name = replace(t.staff_name,CHAR(120),''),
t.staff_id_no = replace(t.staff_id_no,CHAR(120),''),
t.swipe_date = replace(t.swipe_date,CHAR(120),''),
t.on_time = replace(t.on_time,CHAR(120),''),
t.off_time = replace(t.off_time,CHAR(120),'')
where t.id > myId;
/*将.替换成:*/
update sie_attendance_external_t t
set t.staff_name = replace(t.staff_name,CHAR(190),CHAR(16)),
t.staff_id_no = replace(t.staff_id_no,CHAR(190),CHAR(16)),
t.swipe_date = replace(t.swipe_date,CHAR(190),CHAR(16)),
t.on_time = replace(t.on_time,CHAR(190),CHAR(16)),
t.off_time = replace(t.off_time,CHAR(190),CHAR(16))
where t.id > myId;
/*去掉回车和换行*/
update sie_attendance_external_t t
set t.staff_name = REPLACE(REPLACE(t.staff_name, CHAR(10), ''), CHAR(13),''),
t.staff_id_no = REPLACE(REPLACE(t.staff_id_no, CHAR(10), ''), CHAR(13),''),
t.swipe_date = REPLACE(REPLACE(t.swipe_date, CHAR(10), ''), CHAR(13),''),
t.on_time = REPLACE(REPLACE(t.on_time, CHAR(10), ''), CHAR(13),''),
t.off_time = REPLACE(REPLACE(t.off_time, CHAR(10), ''), CHAR(13),'')
where t.id > myId;
/*更新上班时间格式*/
update sie_attendance_external_t t
set t.on_time = (
select case when length(tt.on_time)=7
then concat('0',tt.on_time)
else
tt.on_time
end
from (select * from sie_attendance_external_t) tt where t.id = tt.id)
where id > myId;
/*更新下班时间格式*/
update sie_attendance_external_t t
set t.off_time = (
select case when length(tt.off_time)=7
then concat('0',tt.off_time)
else
tt.off_time
end
from (select * from sie_attendance_external_t) tt where t.id = tt.id)
where id > myId;
END
//
函数实践
作用: 从不规则的数据中截取时间戳。
DELIMITER $$
create function getnum(param varchar(50))
returns varchar(50)
begin
DECLARE postion INT;
DECLARE len INT;
DECLARE str varchar(50) DEFAULT param;
DECLARE tmp varchar(50) DEFAULT '';
set postion = (select InStr (param,'_')-1);
/*判断是否存在下划线*/
if postion <> -1 then
set str = (select left(param,postion));
end if;
/*开始循环判断*/
set len = char_length(str);
lop:begin
while len > 0 do
if(ascii(mid(str,len,1))>47 and ascii(mid(str,len,1))<58) then
set tmp = concat(tmp,mid(str,len,1));
else
/*如果不是数字,直接返回*/
LEAVE lop;
END IF;
SET len = len - 1;
END WHILE;
end lop;
/*返回结果集*/
return REVERSE(tmp);
end $$
总结:存储过程的使用需用call 关键字调用,
函数直接select中使用,直接拿到返回值。
mysql函数使用场景_mysql的函数和存储过程的比较,以及在实际场景中的使用案例...相关推荐
- 将mysql日期格式转换_MySQL日期函数与日期转换格式化函数大全
Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文列出了MYSQL常用日期函数与日期转换格式化函数 1.DAYOFWEEK(date) 2.WEEKDAY(date) 3.DAYOFMO ...
- mysql 正无穷字符_mysql 字符串函数收集比较全
ASCII(str)返回字符串str的 最左面字符的ASCII代码值.如果str是空字符串, 返回0.如果str是NULL,返回NULL. mysql> select ASCII('2'); - ...
- mysql 字符串 截取字母_MySQL字符串函数:字符串截取
MySQL 字符串截取函数:left(), right(), substring(), substring_index().还有 mid(), substr().其中,mid(), substr() ...
- rds支持mysql自带函数吗_MySQL自定义函数(CREATE FUNCTION)
在使用MySQL的过程中,MySQL 自带的函数可能完成不了我们的业务需求,这时候就需要自定义函数.自定义函数是一种与存储过程十分相似的过程式数据库对象.它与存储过程一样,都是由 SQL 语句和过程式 ...
- mysql开窗函数有哪些_mysql开窗函数
开窗函数: 它可以理解为记录集合,开窗函数也就是在满足某种条件的记录集合上执行的特殊函数. 对于每条记录都要在此窗口内执行函数,有的函数随着记录不同,窗口大小都是固定的,这种属于静态窗口: 有的函数则 ...
- mysql当前日期减去天数_mysql日期函数-日期相减返回天数
一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +-------------------- ...
- mysql的聚合函数文档_MySQL聚合函数
MySQL聚合函数 MySQL的聚合函数用于对多个值执行计算,并将结果返回为单个值,如所有值的平均值,所有值的总和以及某些值组中的最大值和最小值.我们通常将聚合函数与数据查询语言中的SELECT语句一 ...
- mysql 获取子分类_MySQL 自定义函数获取一个分类的无限级子分类
本方法不易维护,建议取出数据,在程序中递归,例如 https://javascript.net.cn/article?id=654 代码如下:delimiter / DROP FUNCTION IF ...
- mysql 处理文本数据_MySQL ------ 数据处理函数(文本、日期、数值)(十)
与大多数语言一样,SQL支持利用函数来处理数据. 好处:函数一般在数据上执行,给数据的转换和处理提供了方便. 可移植的(portable) : 能运行在多个系统上的代码. 注意: 1.多数SQL 是可 ...
最新文章
- ubuntu 安装RPM软件包
- hdfs入门——常用命令
- 软件开发有多少种方式
- 蓝牙地址的name为null_蓝牙, enable协议栈流程
- 分布式入门:常用的分布式基础算法
- android之APP模块编译
- 06_Jedis完成MySQL的条件查询案例
- 成立一年 百度搜索公司迎来首任 CTO
- 反向传播网络(BP 网络)
- 适配器模式的原理与实现
- Linux内核线程kernel thread详解--Linux进程的管理与调度(十)
- (转)浅说深度学习:核心概念
- 使用R包qpdf用一行代码将多个pdf合并为一个pdf
- 维宏控制卡win7 驱动_维宏雕刻机控制卡驱动
- 计算机鼠标没有安装驱动,鼠标动不了怎么安装驱动_电脑鼠标不能动怎么安装驱动...
- python opencv图像对比度_OpenCV基础(四)---图像对比度,亮度调整
- 雷达的工作原理示意图_雷达基本理论与基本原理
- 2021年黄石二中高考成绩查询,【黄石二中2018高考金榜】黄石二中2004届高考总结...
- oracle11g认证,ORACLE11g-OCP认证(甲骨文专家级数据库工程师)
- PCI-E的针脚定义的简单讲解(备忘)
热门文章
- 快捷键_AutoCAD 2021中的默认快捷键、新建或编辑快捷键
- 三张表有重复字段_什么?搞不定Kafka重复消费?
- android 远程桌面连接闪退,远程桌面一点连接就闪退,不能弹出输入账号密码窗口...
- 的控制台主题_【12.11最新版】芯片机/大气层主题软件NXThemesInstaller
- python语法学习_Python学习1——语法
- python discuz_pythonDiscuz发帖器的实现
- 怎么用python编程前二n-1项的等差数列的和_python 等差数列末项计算方式
- assertpythonraise_使用assertRaise测试异常消息
- android添加删除项目,编写android计算器添加删除按钮,出现很抱歉,XX项目已停止运行。...
- html中所有的标签,HTML中的所有标签及其做用!