(1)
函数的作用:
1.1 主要是用来进行逻辑处理,逻辑计算;
1.2
且可以在DML(select/insert/update/delete)中进行调用(比存储过程强).其条件是:
function内容,只能是输入参数的逻辑处理;
或为查询:但查询只能select结果只有一条记录的或如sum等计算。
1.3
同时不能里含有DML语句(不如存储过程).
(2)
三点与存储过程不同的地方:
1,必须要一个RETURNS语句来定义返回值类型 2,不能指定参数的IN、OUT或INOUT修 饰符,所有参数隐式的为IN 3,Function体必须包含RETURN语句来终结Function执行并返回指定的结果给调用者 (3)
在命令行查看方式:
show function status;
show create function ***; 在命令行调用方法:
select fun_sum(1) //
(4)
实例一:
delimiter //
drop function if exists fun_sum // create function fun_sum(userid double) returns double begin declare ta double; select sum(totalamount) into ta from customer where ctype=userid; set ta=ta+10000; return ta; end // 命令行调用时,用:select fun_sum(1) //
可在select / insert /update /delete中调用函数。如下:
insert into customer values(3,fun_sum(2))// update customer set ctype=4 where totalamount=fun_sum(2); (5)
关于function中的insert/update/delete:
函数中,也可以有insert,update,delete这些操作,只能用命令行方式:select function()进行调用.
若 要用DML(select/insert/update/delete)中调用函数,则函数中不可以有insert/update/delete等操作. (6)
mysql常用内建函数
(6.1)字符串function
CONCAT
string = CONCAT(string [, ...]) 返回字符串相加的结果 如果 sql_mode='ANSI',还可以使用||操作符来进行字符串相加 INSERT
string = INSERT(original_string, position, length, new_string) 在指定position将new_string插入original_string,直到length个字符 INSTR
position = INSTR(string, substring) 返回substring在 string中第一个出现的position,如果没有找到,则返回0 LCASE
string = LCASE(string) 返回string转换为lowercase的形式 LEFT
string = LEFT(string, length) 返回string最左边length长度的字符串 LENGTH
characters = LENGTH(string) 返回字符串的长度,对于多字节字符串则应该使用 CHAR_LENGTH来返回字符的长度而不是字节的长度 LOAD_FILE
string = LOAD_FILE(file_name) 读取MySQL服务器上的一个文件并返回合适 类型(BLOG或TEXT) LOCATE
position = LOCATE(substring, string [,start_position]) 类 似于INSTR,它在string里搜索一个substring,并可以知道开始搜索的位置,如果没有找到则返回0 LPAD
string = LPAD(string, length, pad) 将pad加到string的左边直到输出的字 符串的长度达到length LTRIM
string = LTRIM(string) 去掉string左边所有的空格 REPEAT
string = REPEAT(string, count) 返回string重复count次数的字符串 REPLACE
string = REPLACE(string, search_string, replace_string) 在 string中搜索search_string,用replace_string来替换 RPAD
string = RPAD(string, length, pad) 将pad加到string的右边直到输出的字 符串的长度达到length RTRIM
string = RTRIM(string) 去掉string右边所有的空格 STRCMP
string = STRCMP(string1, string2) 比较两个字符串大小,类似于C里的 strcmp函数,返回值为0,-1,1 SUBSTRING
string = SUBSTRING(string, position, [,length]) 返回从 指定position开始length长度的子字符串,position可以为负数 TRIM
string = TRIM([[BOTH|LEADING|TRAILING] [padding] FROM] string) 默认trim空格,指定padding则trim padding,可以知道trim前面、后面或两者 UCASE
string = UCASE(string) 返回string转换为uppercase的形式 (6.2)数字function
ABS
number = ABS(number) 返回绝对值 CEILING
number = CEILING(numer) 返回稍大的整数 FLOOR
number = FLOOR(number) 返回比number稍小的整数 FORMAT
string = FORMAT(number, decimal_places) 使用指定的 decimal_place小数位来格式化number,并在每个千位上加上逗号来进行分隔 LEAST
number = LEAST(number1, number 2 [, ...]) 返回最小的数 MOD
remmainder = MOD(numerator, denominator) 求模 POW/POWER
result = POWER(number, power) 求幂,power可以为整数、小数、负数 ROUND
integer = ROUND(number [,decimals]) 将浮点数转换为最接近的整数,四舍五入, 可以指定精确到小数位decimals SIGN
Java代码 number = SIGN(number) 返回-1、0、1来分别表示负数、0、正数 SQRT
number = SQRT(number) 求平方根,相当于POWER(number, .5) (6.3)其他
BENCHMARK zero = BENCHMARK(no_of_repeats, expressions) 重复执行指定的表达式,可以用于MySQL调优 COALESCE
value = COALESCE(value [,...]) 返回列表里第一个非空的值 GET_LOCK return_code = GET_LOCK(lock_name, timeout) 给定名字 lock_name来定义锁,返回锁号码 RELEASE_LOCK
return_code = RELEASE_LOCK(lock_name) 解锁,返回锁号码 7)IS_FREE_LOCK
integer = IS_FREE_LOCK(lock_name) 如果用户定义的名为 lock_name的锁可以获得,则返回1,否则返回0 IFNULL
value = IFNULL(value, nullvalue) 如 果value不为NULL则返回value,否则返回第二个参数nullvalue INTERVAL
position = INTERVAL(search, number, ...) 返回search应该在 后面的列表的位置,从0开始,后面的列表应该为升序 ISNULL
integer = ISNULL(value) 如果value是NULL则返回1,否则返回0 NULLIF
value = NULLIF(value1, value2) 如果value1和value2相等,则返回 NULL,否则返回value1 UUID
string = UUID() 返回128位的Universal Unique Identifier(UUID),唯一值,部分来自你的计算机名、当前日期和时间。 |
|
来自: ShangShujie > 《我的图书馆》