MySQL基础——常见函数(单行函数)
MySQL中的函数
概念:类似于Java中的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
好处:1.隐藏了实现细节,2.提高了代码的可重用性
调用: select 函数名(实参列表) 【from 表】;
特点: 1.叫什么(函数名)
2.干什么(函数功能)
分类:
1.单行函数
如 concat,length,ifnull等
2.分组函数
功能:做统计使用,又称为统计函数,聚合函数,组函数
常见单行函数
一,字符函数
length 获取参数值的字节个数
SELECT LENGTH('john');
SELECT LENGTH('李平安');
concat 拼接字符串
SELECT CONCAT(last_name,'_',first_name) FROM employees;
upper,lower 字符大小写转换
SELECT UPPER('john');
SELECT LOWER('joHn');
示例:将姓变大写,名小写,然后拼接
SELECT CONCAT(UPPER(last_name),LOWER(first_name)) AS 姓名 FROM employees;
substr,substring 字符截取
注意:sql中索引从1开始
截取从指定索引处后面所有字符
SELECT SUBSTR('李莫愁爱上了陆湛远',7) AS out_put;
截取从指定索引处指定字符长度的字符
SELECT SUBSTR('李莫愁爱上了陆湛远',1,3) AS out_put;
案例:将姓名中首字符大写,其他字符小写,然后用—拼接显示出来
SELECT
CONCAT (
UPPER (SUBSTR (last_name, 1, 1)),
'_',
LOWER (SUBSTR (last_name, 2))
)
FROM
employees;
instr 返回子串第一次出现的索引,如果找不到则返回0
SELECT INSTR('杨不悔爱上了易柳霞','易柳霞') AS out_put
trim 去除字符左右两边的空格或指定字符
SELECT LENGTH(TRIM(' 张翠山 ')) AS out_put;
SELECT TRIM('a' FROM 'aaaaaaaaa张翠aaaaaaaaaaaaaa山aaaaaaaaaaaaaaaaaa') AS out_put;
lpad 用指定字符实现左填充长度
SELECT LPAD('殷素素',10,'*') AS out_put;
rpad 用指定字符实现所右填充长度
SELECT RPAD('殷素素',10,'$') AS out_put;
replace 替换
SELECT REPLACE('张无忌爱上了周芷若周芷若周芷若','周芷若','赵敏') AS out_put;
二,数学函数
round 四舍五入
SELECT ROUND(1.4536);
SELECT ROUND(1.5243,2);
ceil 向上取整 返回>=该参数的最小整数
SELECT CEIL(1.00000052);
floor 向下取整 返回<=该参数的最大整数
SELECT FLOOR(9.999);
truncate 截断
SELECT TRUNCATE(1.65,1);
mod取余/取模
MOD(a,b) : a-a/b
SELECT MOD(10,3);
SELECT 10%3;
三,日期函数
now 返回当前系统日期+时间;
SELECT NOW();
curdate 返回当前系统日期,不包含日期
SELECT CURDATE();
curtime 返回当前时间,不包含日期
SELECT CURTIME();
获取指定的部分,年月日时分秒
SELECT YEAR(NOW()) AS 年;
SELECT YEAR('1998-1-1') AS 年;
SELECT YEAR(hiredate) AS 年 FROM employees;
SELECT MONTH(NOW()) AS 月;
SELECT MONTHNAME(NOW()) AS 月;
str_to_date 将日期格式的字符转换为指定格式的日期
SELECT STR_TO_DATE('1912-3-4','%Y-%c-%d') AS out_put;
案例:查询入职日期为1992-4-3号的员工的信息
SELECT * FROM employees WHERE hiredate = '1992-4-3';
SELECT * FROM employees WHERE hiredate = STR_TO_DATE('4-3 1992','%c-%d %Y');
date_format 将日期转换为字符
SELECT DATE_FORMAT(NOW(),'%Y年%c月%d日') AS DATE;
案例:查询有奖金的员工名和入职日期(xx月/xx日/xx年)
SELECT last_name,DATE_FORMAT(hiredate,'%m月/%d日/%Y年') AS 入职日期
FROM employees
WHERE commission_pct IS NOT NULL;
四,其他函数
SELECT VERSION(); #查询mysql版本
SELECT DATABASE(); #查询当前数据库
SELECT USER(); #查询user
if函数,相当于if else 的效果
SELECT IF(10>5,'大','小');
SELECT last_name,commission_pct,IF(commission_pct IS NULL,'没奖金,呵呵','有奖金,哈哈') AS 备注
FROM employees;