/*
分类:
单行函数:
eg: concat,length,ifnull
分组函数:
做统计使用,也叫聚合函数
*/
## 字符函数:
# length: 计算字符串字节数
# tips: 一个汉字占三个字节
SELECT LENGTH("h好");
# concat: 连接多个字段成为一个字符串
SELECT CONCAT("111","???",122);
# upper,lower: 转化内英文字符大小写
SELECT UPPER("ZhangZelong");
SELECT LOWER("ZhangZelong");
# substr: 截取子字符串
# 重载一:start
# tips: 第一个是第几个字,这里一个汉字算一个
SELECT SUBSTR('罗小黑战纪',5);
# 重载二:start,length
SELECT SUBSTR('罗小黑战纪',2,2);
# instr: 返回子串在原字符串中的起始索引,没有返回0
SELECT INSTR('阿能拐阿能','??');
# trim: 去掉字符串前后的字符
# 重载一:默认去空格
SELECT LENGTH(TRIM(' hello '));
# 重载二:去掉指定字符
SELECT TRIM('a' FROM 'aaaaaazerlenzhangaaaaa');
# lpad:使用指定字符在左侧填充到指定长度
SELECT LPAD('hello',10,'*');
SELECT RPAD('汉字',10,'*');
# replace:替换
SELECT REPLACE('hello,hello,ello,llo,lo,o','llo','@');
## 数学函数
# round:
# 重载一:四舍五入
SELECT ROUND(-1.2);
# 重载二:保留指定位数小数
SELECT ROUND(1.2659,2);
# ceil,floor: 向上/下取整
SELECT CEIL(1.2);
SELECT FLOOR(1.2);
# truncate: 截断,第二参数是保留几位小数
SELECT TRUNCATE(1.8,0);
# mod: 取余
# tips: a-a/b*b,所以余数符号一定和被除数一致
SELECT MOD(-10,-3);
## 日期函数
# now 返回当前日期加时间
SELECT NOW();
# curdate:返回当前日期不包含时间
SELECT CURDATE();
# curtime(): 返回当前时间不包含日期
SELECT CURTIME();
# year,month,day,hour,minute,second: 获取一个日期中的年月日,时分秒,
SELECT YEAR("2000-03-19 18:23:48");
SELECT MONTH("2000-03-19 18:23:48");
SELECT DAY("2000-03-19 18:23:48");
SELECT HOUR("2000-03-19 18:23:48");
SELECT MINUTE("2000-03-19 18:23:48");
SELECT SECOND("2000-03-19 18:23:48");
SELECT MONTHNAME("2000-03-19 18:23:48");# 获取月份英文名
# str_to_date: 将字符串转化成日期
SELECT STR_TO_DATE('19-3-1999','%d-%c-%Y');
# date_format: 将日期按格式输出
SELECT DATE_FORMAT(NOW(),'%Y年%c月%d日');
# 比较日期间隔,用前面的减去后面的,返回天数
SELECT DATEDIFF(NOW(),'2000-03-19');
## 其他函数
# version:查看当前版本号
SELECT VERSION();
# database:当前数据库
SELECT DATABASE();
# user: 当前用户
SELECT USER();
# MD5: 加密字符串
SELECT MD5("hello");
# password: 返回字符串密码形式
SELECT PASSWORD("hello");
## 流程控制函数
# if 类似条件表达式
SELECT IF(10>5,'大','小');
SELECT IF(commission_pct IS NULL,'没奖金,hhh','居然有奖金')
FROM employees;
# case 语句
SELECT salary 原始工资,
department_id,
CASE department_id
WHEN 30 THEN salary*1
WHEN 40 THEN salary*2
WHEN 50 THEN salary*3
ELSE salary
END AS "新工资"
FROM employees;
SELECT salary,
CASE
WHEN salary> 20000 THEN 'A'
WHEN salary> 15000 THEN 'B'
WHEN salary> 10000 THEN 'C'
ELSE 'D'
END AS "级别"
FROM employees;
Mysql学习——字符串日期数学流程控制等单行函数
最新推荐文章于 2024-07-14 10:02:54 发布