# 【mysql的编程专题⑤】自定义函数
标签(空格分隔): Mysql
---
> 用户自定义函数(user-defined function,UDF) 是一种对mysql的扩展途径,其用法与内置函数相同
## 创建自定义函数
**语法**
```sql
create function function_name
returns
{string|integer|real|decimal}
routine_body
```
**Example1**
```sql
delimiter $
create function f1(gdate datetime)
returns varchar(100) READS SQL DATA -- 一定要声明;
begin
declare x varchar(100) default '';
set x = date_format(gdate,'%Y年%m月%h日 %H时%m分%s秒');
return x;
end $
delimiter ;
```
**Example2**
```sql
delimiter $
create function str_cut(str varchar(255),length tinyint)
returns varchar(255) READS SQL DATA
begin
if(ISNULL(str)) then
return '';
elseif char_length(str) <= length then
return str;
elseif char_length(str) > length then
return contact(left(str,length),'...');
end if;
end $
delimiter ;
```
## 查看函数
```sql
mysql> show function status\G
*************************** 1. row ***************************
Db: test
Name: f1
Type: FUNCTION
Definer: root@localhost
Modified: 2015-05-01 16:21:40
Created: 2015-05-01 16:21:40
Security_type: DEFINER
Comment:
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: latin1_swedish_ci
```
## 删除函数
```sql
mysql> drop function f1; -- f1 函数名;
Query OK, 0 rows affected
```
- 【mysql的编程专题①】流程控制与其他语法
- 【mysql的编程专题②】触发器
- 【mysql的编程专题③】内置函数
- 【mysql的编程专题④】存储过程
- 【mysql的编程专题⑤】自定义函数
- 【mysql的编程专题⑥】视图
- 【mysql的设计与优化专题(1)】ER图,数据建模与数据字典
- 【mysql的设计与优化专题(2)】数据中设计中的范式与反范式
- 【mysql的设计与优化专题(3)】字段类型与合理的选择字段类型
- 【mysql的设计与优化专题(4)】表的垂直拆分和水平拆分
- 【mysql的设计与优化专题(5)】慢查询详解
- 【mysql的设计与优化专题(6)】mysql索引攻略
- 【Mysql问题集锦(1)】mysql不能使用innodb存储引擎
- 【Mysql进阶技巧(2)】利用mysql生成唯一序号
- 【Mysql进阶技巧(1)】MySQL的多表关联与自连接
- 【Mysql高可用架构(1)】基于日志点的主从复制
- 【Mysql高可用架构(2)】主从管理的系统视图
- 【Mysql高可用架构(3)】基于GTID的主从复制
- 【Mysql高可用架构(4)】在线变更复制类型
- 【Mysql高可用架构(5)】多源复制(多主一从)
- 【Mysql高可用架构(6)】多线程复制
- 【Mysql高可用架构(7)】在线设置复制过滤
- 【Mysql高可用架构(8)】解决主从不一致
- 【Mysql高可用架构(9)】初识mycat以及制作mycat镜像
- 【Mysql高可用架构(10)】mycat配置mysql读写分离
- MyCat 集群部署(HAProxy + MyCat)
- 常用复杂sql语句整理