一、数据库内置函数
- 数字函数
abs(x):取x的绝对值
round(x,n):将x四舍五入到n位
sqrt(x):对x进行开平方
mod(m,n):返回m除以n的余数
- 字符串函数
lower/upper(x):转小/大写
initcap(x):将每个单词的首字母大写
concat(x,y):连接两个字符串
substr(x,m,n):从m位置对x字符串进行n个长度的截取
replace(x,c1,c2):将x字符串中的c1字符换成c2字符
ltrim/rtrim(x):去掉字符串左、右侧的空格
reverse(col):将某一列的值倒序展示
len(x):获取字符串长度
find_in_set(x,list):返回x在list中的位置
- 日期函数
getdate():获取当前时间
二、数据库自定义函数
1、自定义函数的作用:
- 提高SQL语句的重用性,共享性和可移植性;
- 减少重复代码的编写,提高程序的可读性;
- 能够实现较快的执行速度,减少网络流量,提高程序编译和运行效率。
2、自定义函数语法:
CREATE FUNCTION 函数名(
变量名称 类型,
变量名称 类型
)
RETURNS 类型
BEGIN
-- 声明语句(要完成的功能逻辑)
RETURN 变量
END;
3、实例:
假设库中有表person
- 不带参函数
--如果存在删除该函数
DROP FUNCTION IF EXISTS getCount;
--定义函数
CREATE FUNCTION getCount()
RETURNS INT --返回值类型
BEGIN
RETURN (SELECT COUNT(*) FROM 表名);
END;
- 带参函数
DROP FUNCTION IF EXIST getAge;
CREATE FUNCTION getAge()
RETURNS INT
BEGIN
DECLARE age INT --定义变量
SET age = (SELECT age from person where person.id=id)
IF(ISNULL(age)) THEN -- 查询结果不存在
RETURN 0;
ELSE
RETURN age;
END IF
END;
4、函数调用
SELECT getCount(参数);