Mysql 自定义函数简单例子

来源:互联网 发布:百度云加速软件 编辑:程序博客网 时间:2024/05/16 09:39

格式化NOW函数:

mysql> SELECT NOW();+---------------------+| NOW()               |+---------------------+| 2017-07-07 16:08:44 |+---------------------+1 row in setmysql> SELECT DATA_FORMAT(NOW,'%y年%m月%d日 %H点:%i分:%s秒');1305 - FUNCTION test.DATA_FORMAT does not existmysql> SELECT DATE_FORMAT(NOW,'%y年%m月%d日 %H点:%i分:%s秒');1054 - Unknown column 'NOW' in 'field list'mysql> SELECT DATE_FORMAT(NOW(),'%y年%m月%d日 %H点:%i分:%s秒');+--------------------------------------------------+| DATE_FORMAT(NOW(),'%y年%m月%d日 %H点:%i分:%s秒') |+--------------------------------------------------+| 17年07月07日 16点:10分:41秒                      |+--------------------------------------------------+1 row in set

创建无参自定义函数:

mysql> CREATE FUNCTION f1() RETURN VARCHAR(30)    -> RETURN DATE_FORMATE(NOW(),'%y年%m月%d日 %H点:%i分:%s秒');1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RETURN VARCHAR(30)RETURN DATE_FORMATE(NOW(),'%y%m%d%H点:%i分:%s' at line 1mysql> CREATE FUNCTION f1() RETURNS VARCHAR(30)    -> RETURN DATE_FORMAT(NOW(),'%y%m%d%H点:%i分:%s');Query OK, 0 rows affected

调用函数:

mysql> select f1();+-----------------------------+| f1()                        |+-----------------------------+| 17年07月07日 16点:27分:49秒 |+-----------------------------+1 row in set

创建有参自定义函数:

mysql> CREATE FUNCTION f2(num1 smallint UNSIGNED,num2 smallint UNSIGNED)    -> RETURNS FLOAT(10,2) UNSIGNED    -> RETURN  (num1+num2)/2;Query OK, 0 rows affectedmysql> select f2(1,2);+---------+| f2(1,2) |+---------+|     1.5 |+---------+1 row in set

MySQL允许使用非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。这里,“(M,D)”表示该值一共显示M位整数,其中D位位于小数点后面。例如,定义为FLOAT(7,4)的一个列可以显示为-999.9999。MySQL保存值时进行四舍五入,因此如果在FLOAT(7,4)列内插入999.00009,近似结果是999.0001。

参考博客:点它

创建复合结构体的自定义函数:
delimiter:参考博客:MYSQL中delimiter的作用

store表:

store | CREATE TABLE `store` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `name` varchar(20) NOT NULL,  `count` int(11) NOT NULL DEFAULT '1',  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 |
mysql> delimiter //mysql> CREATE FUNCTION adduser(username VARCHAR(20),num smallint)    -> RETURNS INT UNSIGNED    -> BEGIN     -> insert into store(id,name,count) values(null,username,num);    -> RETURN LAST_INSERT_ID();    -> END    -> //Query OK, 0 rows affected
mysql> delimiter ;mysql> select adduser('HELLOWORLD',12);+--------------------------+| adduser('HELLOWORLD',12) |+--------------------------+|                        9 |+--------------------------+1 row in set
原创粉丝点击