(2.16)Mysql之SQL基础——函数

关键词:mysql函数,mysql自定义函数,mysql聚合函数,mysql字符串函数,mysql数值函数

1、自定义函数

-- (1)一般形式
create function 函数名(参数类型 数据类型)
returns 返回类型
begin
sql 语句
return 返回的数据值
end -- (2)举例--不带参数的函数
delimiter //
create function fn_test()
retrurns varchar(20)
begin
  return 'hello,world';
end //
delimiter ; 举例--带参数的函数
--求num的阶乘
create function fn_jieceng(num int)
returns int
BEGIN
declare n int;
  set n=1;
  while num>0 DO
  set n=num*n;
  set num=num-1;
  end while;
  return n;
end ;

-- (3)调用
【1】直接select fn_test();
【2】在存储过程,或者任何表达式中都可以运用它 -- (4)函数的查看
【1】mysql.proc:select * from mysql.proc where db='db_name' and type='function';
【2】show function status like 'fn_name';
【3】show create function fn_test();
【4】information_schema.`routines`:
select * from information.`routines`
where routine_schema='db_name' and routine_type='function'; -- (5)函数的删除
【1】drop function fn_test();

2、聚合函数

【1】max:最大值,适用于任何类型
【2】min:最小值,适用于任何类型
【3】avg:平均值,适用于数字类型
【4】sum:求和,适用于数字类型
【5】count:统计行数 【6】group_concat:将字符串从分组中连接成具有各种选项(如distinct,order by和separator)的字符串(sql server中的for xml path(),oracle中的wmsys.wm_concat) (1)概念 ,即实现分组后,其他值默认以逗号为分隔符连接到一行 
(2)最大长度参数:默认为1024,group_concat_max_len 使用实例;
【1】distinct:去重  【2】order by :排序  【3】设定分割字符

 

3、常用字符串函数

【1】concat(st1,str2,'test_str'):将括号内的多个字符串组连成一个字符串(就是类似于oracle中的||,sql server中的+,拼接)

【2】length(str)、char_length(str):以字节或者字符获取字符串的长度(英文下是一样的,但是UTF8中文一个字符是3个字节,比如  '你好呀',用char_length就是3,用length就是9)

【3】left(str,N)/right(str,N)函数:获取str左边/右边N个字符

【4】replace(str,old_str,new_str)函数:把str中的old_str字符串,替换成new_str字符串

【5】trim(str):删除str字符串中左右两边的空格,中间不会删除。trim(leading/trailing from 'str')即只删除str前/后的空格。

【6】find_in_set(str1,str2):在逗号分隔符的字符串列表中找到一个字符串。。例如:find_in_set('b','a,b,c'),结果为2,如果str1不存在于str2中,即返回0;

【7】format(N,D,locale):格式化数字,例如format(30011.567,2)则结果为30,011.57。

    中国默认以3位为一个逗号,来显示数字,但是如果是其他国家则不同。例如德国就可以这么查看:  format(30011.567,2),则显示为,300.11,57

【8】instr(str,find_str):返回字符串在字符串中第一次出现的位置。例如:instr('hello_world','wo'),结果为7

【9】concat_ws('connect_str','str1','str2','str3'):意思是,str1和st2之间用connect_str字符串连接起来,str2与str3之间也是。忽略字符串中的所有Null(但不忽略空格)

【10】reverse(str):反转字符串,比如abc变成cba

【11】substring(str,start_pos,get_length):截取str字符串,从start_post下表开始,获取get_lenth个字符。 也可以写成substring(str, from 4 for 3),意思是从第4个开始取,取3个字符。也可以写成负数,意味着从倒数第几个字符开始取。

【12】lower(str)/upper(str):把str字符串所有字符转换成小写/大写

【13】strcmp(str1,str2):字符串比较~~相等为0,不等为1

【14】repeat(str,N):返回str重复N次的结构

【15】lpad/rpad(str,n,pad):用字符串pad对str最左/右边进行填充,直到长度为n为止。

4、数值函数

【1】ABS(X):绝对值

【2】ceil(x.y):向上取整,得x+1

【3】floor(x.y):向下取整,得x

【4】mod(x,y):求模,等价于x%y

【5】round(x,y):返回参数X的四舍五入有y位小数的值,例如round(5.555,2) -> 5.56

【6】truncate(x,y):返回参数x,截断为y位小数的结果,例如round(5.555,2) -> 5.55

5、日期函数

(2.17)Mysql之SQL基础——日期函数

6、流程函数

【1】IF(EXPR,T,F):如果表达式expr为真,则返回T值,否则返回F值

【2】IFNULL(value,value1):如果value为null,则返回value1值

7、常用函数

6.1、LAST_INSERT_ID():获取自增长的最后插入值ID

(2.16)Mysql之SQL基础——函数的更多相关文章

  1. (2.15)Mysql之SQL基础——开发设计最佳规范

    (2.15)Mysql之SQL基础——开发设计最佳规范 关键字:mysql三大范式,mysql sql开发规范 分析: show profile.mysqllsla.mysqldrmpslow.exp ...

  2. (2.10)Mysql之SQL基础——约束及主键重复处理

    (2.10)Mysql之SQL基础——约束及主键重复处理 关键词:mysql约束,批量插入数据主键冲突 [1]查看索引: show index from table_name; [2]查看有约束的列: ...

  3. mysql的sql分页函数limit使用 (转)

    http://www.cnblogs.com/beijingstruggle/p/5631603.html mysql的sql分页函数limit使用 My sql数据库最简单,是利用mysql的LIM ...

  4. (2.14)Mysql之SQL基础——游标

    (2.14)Mysql之SQL基础——游标 关键词:Mysql游标 -- (1)定义游标 declare cur_name cursor for select * from table_name wh ...

  5. (2.13)Mysql之SQL基础——触发器

    (2.13)Mysql之SQL基础——触发器 关键词:Mysql触发器 1.一般形式 -- 0.查看触发器[1]SHOW TRIGGERS;[2]SELECT * FROM `information_ ...

  6. (2.11)Mysql之SQL基础——存储过程与变量

    (2.11)Mysql之SQL基础——存储过程 关键字:mysql存储过程 查看存储过程: []SELECT * FROM information_schema.ROUTINES WHERE ROUT ...

  7. (2.9)Mysql之SQL基础——索引的查看与删除

    (2.9)Mysql之SQL基础——索引的查看与删除 关键词:mysql索引查看,mysql索引删除 1.索引查询(以下包括主键,唯一,普通,复合,全文,但不包括外键) (1)按库查询 select ...

  8. (2.8)Mysql之SQL基础——索引的分类与使用

    (2.8)Mysql之SQL基础——索引的分类与使用 关键字:mysql索引,mysql增加索引,mysql修改索引,mysql删除索引 按逻辑分类: 1.主键索引(聚集索引)(也是唯一索引,不允许有 ...

  9. (2.7)Mysql之SQL基础——表的操作与查看

    (2.7)Mysql之SQL基础——表的操作与查看 搜索关键字:mysql表操作,comment注释操作,mysql临时表 0.临时表 create temporary table 1.创建表(在in ...

随机推荐

  1. vc 获取 硬盘序列号 和 cpu

    vc 获取 硬盘序列号 和 cpu 唯一iD的方法?如题---------网上找来很多资料 也没找到, 要支持xp win7 32/64 系统下都能获取 硬盘序列号 和cpu ID 哪位朋友帮帮忙: ...

  2. c语言的fopen

    c语言fopen函数 fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式); 其中, “文件指针名”必须是被说明为FILE 类型的指针变量: “文件名” ...

  3. Unity的Asset Store商店下载文件路径

    如果之前在Asset Store商店下载过资源包,结果下次用的时候找不到了,不用急,其实Unity把它自动保到下面这个目录了,最后一个文件夹名与版本号有关,找到前面的即可. C:\Users\Admi ...

  4. JavaScript正则表达式1

    在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要.正则表达式就是用于描述这些规则的工具.换句话说,正则表达式就是记录文本规则的代码. 正则表达式可以: •数据有效性验证.可以 ...

  5. js表单计算金额问题

    <table width="600" border="1" align="center" style="text-align ...

  6. mysql中,root用户密码被遗忘,该如何进行重置?

    需求描述: 在mysql的测试环境中,有时候会遇到一段时间之后root用户的密码被遗忘的情况, 这个时候,就是需要对root密码进行重置,不过,在生产环境中,这种情况还是很少见. 环境描述: 操作系统 ...

  7. [深入理解Android卷一全文-第四章]深入理解zygote

    由于<深入理解Android 卷一>和<深入理解Android卷二>不再出版,而知识的传播不应该由于纸质媒介的问题而中断,所以我将在CSDN博客中全文转发这两本书的所有内容. ...

  8. MySQL<添加、更新与删除数据>

    添加.更新与删除数据 添加数据 为表中所有字段添加数据 INSERT INTO 表名(字段名1,字段名2,……) VALUES(值1,值2,……); insert into 表名 values(值1, ...

  9. Thinkphp 修改U方法按路由规则生成url

    tp开户路由后,使用U方法是不会按路由规则生成url的,一般我们是要手动修改模版,把里面的U方法去掉,手动修改链接,如果是已经写好的程序,后期才添加路由,修改起链接就太麻烦了 今天无聊就修改了一下U方 ...

  10. vsftp服务启动失败

    Linux下的服务如果启动失败,一般是看报错和日志进行排查的 报错看不出什么,那么就看下日志记录了什么/var/log/vsftpd.log: 一般是配置文件有问题 /etc/vsftpd/vsftp ...