分享

(mysql)函数function 常用内建函数 - Changes we need ! - 51CTO技术博客

 ShangShujie 2010-06-01
(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),唯一值,部分来自你的计算机名、当前日期和时间。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多