背景 昨天,关于价格详情接口又来了一个小需求,而且有点特别.价格显示:改为保留两位小数,没错,就是保留两位小数.大家是不是想说这没啥特别的...数据库都有函数搞定了.例如四舍五入的ROUND(x,d),直接截取的TRUNCATE(x,d),还可以利用类型转换CONVERT(value,type)等等.但是,上面的都不能满足这个保留两位的特殊需求,我们来看一下究竟怎么保留两位:小数点两位后,只要大于0的,就直接进一.例如:1.8100 -> 1.81,1.8102 -> 1.82 分析 那么,这…
原文:http://www.cnblogs.com/zhangminghui/p/4113160.html 引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利,比如我前面提到过的聚合函数SUM().AVG()以及日期时间函数等等,可是我们总会出现其他的需求:我们需要调用一个函数,这个函数需要按照我们的要求来实现我们自己的功能,可是这个函数式系统不能提供的因为这中需求的不确定性.因此我们需要自己来解决这种需求.还好MySQL设计的扩展性给了我们这个机会,我…
mysql 自定义函数,生成 n 个字符长度的随机字符串 -- sql function delimiter $$ create function rand_str(n int) returns VARCHAR(255) BEGIN declare str VARCHAR(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSQUVWXYZ'; declare i int DEFAULT 0; declare res_str VAR…
分享一个MySQL 自定义函数CREATE FUNCTION的实例.mysql> delimiter $$mysql> CREATE FUNCTION myFunction-> (in_string VARCHAR(255),-> in_find_str VARCHAR(20),-> in_repl_str VARCHAR(20))->-> RETURNS VARCHAR(255)-> BEGIN-> DECLARE l_new_string VARC…
MySQL自定义函数 一.什么是MYSQL自定义函数? mysql当中的自定义函数,我们简称为UDF,它实际上是一种对MySQL扩展的途径,其用法与内置函数相同. 二.自定义函数应该具备哪些条件? 我们先来回想一下内置函数是怎么使用的,首先函数一定要有一个名字,还有每个函数后面都有一个小括号,小括号里面写的内容我们称之为参数,当函数正常运行时,往往会得到一个信息,这个信息我们称之为返回值.所以我们可以发现,自定义函数应该具备两个条件: (1)参数 (2)返回值 不仅是自定义函数需要这两个条件,我…
用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同. 自定义函数两个必要条件: 参数:可以有另个或多个 返回值:只能有一个 创建自定义函数: CERATE FUNCTION function_name([指定参数类型], ...... ) RETURNS {STRING|INTEGER|REAL|DECIMAL} RETURN  [characteristic ...] routine_body 注释:RETURNS后接返回值的…
自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展MySQL. 所以UDF是对MySQL功能的一个扩展 创建和删除自定义函数语法: 创建UDF: CREATE [AGGREGATE] FUNCTION function_name(parameter_name type,[parameter_name type,...]) RETURNS {STRING|INTEGER|REAL} runtim…
1.前置条件 MySQL数据库中存在表user_info,其结构和数据如下: mysql> desc user_info; +-----------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+----------+------+-----+---------+-------+ | id | int(10) | NO | PRI |…
创建函数 DELIMITER $$DROP FUNCTION IF EXISTS `test` $$CREATE FUNCTION `test`(a int ,b int)RETURNS int BEGIN IF (A>B) THEN RETURN a+b; ELSE RETURN a-b; END IF;ENDDELIMITER; 创建存储过程 DELIMITER $$DROP PROCEDURE IF EXISTS myProc $$CREATE PROCEDURE myProc()BEGI…
正如sqlite可以定义自定义函数,它是通过API定义c函数的,不像其他,如这里的mysql.sqlite提供原生接口就可以方便的调用其他语言的方法,同样的mysql也支持调用其它语言的方法. google "mysql call c function"发现一片文章 MySQL User Defined Functions  This tutorial explains what an User Defined Function (UDF) is, what it does and w…
前言 日常开发中,可能会用到数据库的自定义函数/存储过程,本文记录MySQL对自定义函数与存储过程的创建.使用.删除的使用 通用语法 事实上,可以认为存储过程就是没有返回值的函数,创建/使用/删除都非常相似,在Navicat可视化工具中,自定义函数/存储过程都归类为函数 定义变量 -- 定义变量,以及赋默认值0 DECLARE c INT(2) DEFAULT(0); 设置变量 -- 设置变量值 SET c = c + 1; 流程控制 -- 流程控制,多条件使用 AND/OR IF c < 0…
自定义函数和存储过程的区别: 1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强.存储过程,功能强大,可以执行包括修改表等一系列数据库操作:用户定义函数不能用于执行一组修改全局数据库状态的操作. 2)对于存储过程来说可以返回参数,如记录集,而函数只能返回值或者表对象.函数只能返回一个变量:而存储过程可以返回多个.存储过程的参数可以有IN,OUT,INOUT三种类型,而函数只能有IN类~~存储过程声明时不需要返回类型,而函数声明时需要描述返回类型,且函数体中必须包含一个有效…
存储过程 概念 存储过程,是一个数据库对象,类似一个函数. 在存储过程中可以使用SQL中的绝大部分内容,并且可以加入编程语言的特性(循环判断分支). 编写好存储过程之后,可以在客户端调用存储过程,存储过程会自动的执行里面的一系列代码 在存储过程中使用DDL/DML/TCL 和普通SQL一样,DQL和普通SQL略有区别. 创建存储过程 创建存储过程的语法 create PROCEDURE 过程名称([参数列表]) BEGIN SQL语句 END; --参数列表的声明规范:参数的输入.输出类型 参数…
存储函数 创建存储函数,需要使用CREATE FUNCTION语句,基本语法如下: CREATE FUNCTION func_name([func_parameter]) RETURNS TYPE [characteristics...] routine_body CREATE FUNCTION为用来创建存储函数的关键字:func_name表示存储函数的名称 func_parameter为存储函数的参数列表,参数列表如下 其中,IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以…
This function has none of DETERMINISTIC, NO SQL解决办法 创建存储过程时 出错信息: ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_t…
新建: Create function function_name(参数列表)returns返回值类型 函数体 函数名,应该合法的标识符,并且不应该与已有的关键字冲突. 一个函数应该属于某个数据库,可以使用db_name.funciton_name的形式执行当前函数所属数据库,否则为当前数据库. 参数部分,由参数名和参数类型组成. 返回值类类型 函数体由多条可用的mysql语句,流程控制,变量声明等语句构成. 多条语句应该使用begin end语句块包含. 注意,一定要有return返回值语句.…
用于递归查找Id(通过parentId关联)参数为int 类型的值: CREATE DEFINER=`root`@`%` FUNCTION `getChildList`(rootId INT) RETURNS text CHARSET utf8 BEGIN DECLARE sTemp text; DECLARE sTempChd text; SET sTemp = '$'; SET sTempChd =cast(rootId as CHAR); WHILE sTempChd is not nul…
创建定义函数的的基本语法如下 # DELIMITER是用来设置边界符的 DELIMITER // CREATE FUNCTION 函数名(形参列表) RETURNS 返回类型 begin # 函数体 RETURN END // DELIMITER ; 1.创建日期时间格式化函数 DROP FUNCTION IF EXISTS `FORMAT_DATE_TIME`; CREATE FUNCTION FORMAT_DATE_TIME(`datetimes` DATETIME) RETURNS VAR…
存储过程:call  过程名(参数) 函数:      select  函数名(参数)…
BEGIN #Routine body goes here... /* update szzx_goods_common set gc_id=i where gc_name=(SELECT gc_name from szzx_goods_class where gc_id=i); */ ); ); ; do SELECT image_url,goods_id into img,goodsid from goods_image where image_id=i; #SELECT goods_id…
delimiter && [函数创建语句.....] [Err] 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) 解决:set glo…
代码: 查找字符串 in_string 中,存在多少个字符串 in_find_str delimiter $$ DROP FUNCTION IF EXISTS `fn_findCharCount` $$ CREATE FUNCTION fn_findCharCount (in_string VARCHAR(), in_find_str VARCHAR() ) RETURNS INT BEGIN DECLARE tcount INT DEFAULT ; DECLARE new_str VARCHA…
-- 根据ID查询对应行的name CREATE FUNCTION function_first (id INT) --创建 BEGIN --开始 ); --声明变量,必须写在第一行,每一个变量最好单独写一个declare SELECT --使用SQL查询出name并使用into关键字赋值给声明的变量 person.name INTO name FROM person WHERE person.id=id; IF (ISNULL(name)) THEN RETURN 'no value'; --…
DELIMITER $$ USE `local_hnyz`$$ DROP FUNCTION IF EXISTS `update_order_relation`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `update_order_relation`(orderId VARCHAR(64)) RETURNS VARCHAR(64) CHARSET utf8BEGIN DECLARE new_orderId VARCHAR(64); SET new_o…
DELIMITER $$ USE `local_hnyz`$$ DROP FUNCTION IF EXISTS `init_data`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `init_data`() RETURNS INT(11)BEGIN DECLARE ind INT DEFAULT 1; -- 同步扩展表信息 INSERT INTO se_marker_site_expansion ( ID,MARKER_SITE_ID,MARKER_…
DELIMITER $$ USE `local_hnyz`$$ DROP FUNCTION IF EXISTS `GET_ORDER_STATUS`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `GET_ORDER_STATUS`(orderId VARCHAR(64)) RETURNS TINYINT-- varchar(64) CHARSET utf8BEGIN DECLARE seal_status VARCHAR(1) DEFAULT '';…
工作过程中需要将基于DB2数据库的应用以及数据迁移到MySQL中去,在原应用中,大量使用了SEQUENCE,考虑尽量减少代码的修改,决定在迁移后的应用中继续保留SEQUENCE的使用,这就要求在MySQL中寻找替代SEQUENCE的解决方案. 在DB2中创建一个SEQUENCE的方法如下: DROP SEQUENCE TRZ_MEMBER.SEQ_TRZ_MEMBER_NO; CREATE SEQUENCE TRZ_MEMBER.SEQ_TRZ_MEMBER_NO AS BIGINT INCRE…
hi 感觉论文开题基本确定了,凯森 1.MySQL -----自定义函数----- ----基本 两个必要条件:参数和返回值(两者没有必然联系,参数不一定有,返回一定有) 函数体:合法的SQL语句:以及简单的SELECT或INSERT语句:如果为复合结构则使用BEGIN...END语句 ----不带参数的自定义函数 把当前时刻转换为中文显示,效果如下 mysql> SET NAMES gbk;Query OK, 0 rows affected (0.05 sec) mysql> SELECT…
一.自定义函数 mysql自定义函数就是实现程序员需要sql逻辑处理,参数是IN参数,含有RETURNS字句用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句. 语法: 创建:CREATE FUNCTION 函数名称(参数列表) RETURNS 返回值类型 函数体 修改: ALTER FUNCTION 函数名称 [characteristic ...] 删除:DROP FUNCTION [IF EXISTS] 函数名称 调用:SELECT 函数名称(参数列表) 二.存储过…
引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利,比如我前面提到过的聚合函数SUM().AVG()以及日期时间函数等等,可是我们总会出现其他的需求:我们需要调用一个函数,这个函数需要按照我们的要求来实现我们自己的功能,可是这个函数式系统不能提供的因为这中需求的不确定性.因此我们需要自己来解决这种需求.还好MySQL设计的扩展性给了我们这个机会,我们可以通过自定义函数的功能解决这个问题. 1.MySQL自定义函数简介 在MySQL中使用自定义函数也需要相…