数据库在标准的SQL语法基础上扩展了一些函数用于进行数据处理或复杂计算,通过对一组数据进行计算得到最终需要的输出结果,为独立的程序单元,无须任何调用者,可直接执行.以下以MySQL数据库为例
一般会有一个到多个输入,这些输入被称为函数的参数,函数内部对参数进行判断和计算,获取最终的一个值作为结果
函数一般会出现在select之后以及where子句之中
数据库函数分为单行函数以及多行函数
单行函数----对每行输入值单独计算,每行得到一个计算结果返回给用户
多行函数----对多行输入值整体计算,最后只有一个结果
单行函数的有以下特征
每个数据库都有大量的单行函数,存在一定差异,但会为一些常用的计算功能提供相应的函数,函数名与用法可能不尽相同,但万变不离其宗,功能上还是相类似的
#计算某一列的字符长度
select char_length(列名) from 表名
#计算某一列的字符长度对应的三角函数值
select sin(char_length(列名)) from 表名
#为某一时间添加上特定的时间 interval后面为指定添加的时间数值 之后为添加的时间单位
select DATE_ADD('time' , interval 数值 单位)
#获取当前日期
select CURDATE();
#获取当前时间
select curtime();
以下为处理null的函数
#如果stu_name 列为null 则返回'没有学生'
select ifnull(stu_name,'没有学生') from student
#如果stu_name 列等于'小明'则返回null
select nullif(stu_name,'小明') from student
#当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
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;;