数据库之数据库函数

数据库在标准的SQL语法基础上扩展了一些函数用于进行数据处理或复杂计算,通过对一组数据进行计算得到最终需要的输出结果,为独立的程序单元,无须任何调用者,可直接执行.以下以MySQL数据库为例
一般会有一个到多个输入,这些输入被称为函数的参数,函数内部对参数进行判断和计算,获取最终的一个值作为结果
函数一般会出现在select之后以及where子句之中

数据库函数分为单行函数以及多行函数

  • 单行函数----对每行输入值单独计算,每行得到一个计算结果返回给用户

  • 多行函数----对多行输入值整体计算,最后只有一个结果

数据库之数据库函数_第1张图片

单行函数的有以下特征

  1. 参数可以为变量、常量,甚至是数据列,接收多个参数,只返回一个值
  2. 对每行单独起作用,每行可以有多个参数,但最终只有一个返回结果’
  3. 改变参数的数据类型,支持嵌套作用—内函数的返回结果可以为外函数的参数

每个数据库都有大量的单行函数,存在一定差异,但会为一些常用的计算功能提供相应的函数,函数名与用法可能不尽相同,但万变不离其宗,功能上还是相类似的

#计算某一列的字符长度
select char_length(列名) from  表名
#计算某一列的字符长度对应的三角函数值
select sin(char_length(列名)) from 表名
#为某一时间添加上特定的时间   interval后面为指定添加的时间数值  之后为添加的时间单位
select DATE_ADD('time' , interval  数值  单位)
#获取当前日期
select CURDATE();
#获取当前时间
select curtime();

以下为处理null的函数

  1. ifnull(expr1,expr2)—当expr1为null,则返回expr2,否则返回expr1
#如果stu_name 列为null 则返回'没有学生'
 select ifnull(stu_name,'没有学生') from student 
  1. nullif(expr1,expr2)—当expr1与expr2相等,则返回null,否则返回expr1
#如果stu_name 列等于'小明'则返回null
select nullif(stu_name,'小明') from student
  1. if(expr1,expr2,expr3)—类似三目运算,当expr1为true,不等于0且不为null,则返回expr2,否则返回expr3
#当stu_name列不为null,则返回有名字,否则返回没有名字
 select if(isnull(stu_name),'没有姓名','有名字') from student

MySQL提供了一个流程控制函数,使用case关键字调用该函数

  • 第一个语法如下
case value
when compare_val1 then result1
when compare_val2 then result2
else result
end

意思为case后面的value依次与when子句中的compare_val1、compare_val2 …相比较,如果相等,则返回compare_valN对应的resultN,否则返回紧接else后的result

select goods_name ,case good_price
when 1 then  '矿泉水'
when 2 then  '百事可乐'
else '冰红茶'
end 
from good;
  • case的第二个语法如下
case 
when condition1 then result1
when condition2 then result2
else result 
end

此处condition为返回值为boolean值的条件表达式

select good_name ,case
when  good_price >= 4  then '冰红茶'
when  good_price <= 2 then '矿泉水'
else '百事可乐'
end 
from good;;

你可能感兴趣的:(数据库之数据库函数)