MySQL函数

本文详细介绍了SQL中的常用函数,包括统计函数如COUNT、SUM、AVG、MAX和MIN,字符串函数如CONCAT、INSTR、UCASE和LCASE,数学函数如ABS、BIN、OCT和HEX,日期时间函数如CURRENT_TIMESTAMP、DATE_ADD和DATEDIFF,以及流程控制函数IF、IFNULL和CASE WHEN。这些函数在数据库管理和数据分析中起到关键作用。
摘要由CSDN通过智能技术生成
#1.统计函数
CREATE TABLE t5(
    `name` VARCHAR(20)
);
INSERT INTO t5 VALUES ('tom');
INSERT INTO t5 VALUES (NULL);

#COUNT(*) COUNT(列)返回非NULL的
SELECT COUNT(*) FROM t5;#2
SELECT COUNT(1) FROM t5;#2
SELECT COUNT(`name`) FROM t5;#1

#SUM(列)求和
SELECT SUM(math) FROM student;

#AVG(列)求平均
SELECT AVG(english + math) FROM student;

#MAX(列)、MIN(列)
SELECT MAX(math),MIN(math) FROM student;

#2.字符串函数
#拼接字符串
SELECT CONCAT(`name`,'的数学成绩是',math) FROM student;
#返回出现的位置,DUAL为亚元表、系统表,可用作测试表
SELECT INSTR(name,'飞') FROM student;
SELECT INSTR('hello world','ll') FROM DUAL;
#转为大写、小写
SELECT UCASE('hello') FROM DUAL;
SELECT LCASE('HELLO') FROM DUAL;
#返回长度[字节]
SELECT LENGTH(`name`) FROM student;
#替换
SELECT REPLACE(`name`,'张飞','赵云'),math FROM student;
#截取字符串SUBSTRING(str,position,length),从str的position开始[从1开始计算],取length个字符
SELECT SUBSTRING(`name`,1,1) FROM student;

#3.数学函数
#绝对值
SELECT ABS(-1) FROM DUAL;
#10进制->2进制 10进制->8进制 10进制->16进制
SELECT BIN(8) FROM DUAL;
SELECT OCT(8) FROM DUAL;
SELECT HEX(16) FROM DUAL;
SELECT CONV(8,10,2) FROM DUAL;
#通用进制转换
SELECT CONV(8,10,2) FROM DUAL;#10进制->2进制
SELECT CONV(16,16,10) FROM DUAL;#16进制->10进制
#向上取整、向下取整
SELECT CEILING(1.1) FROM DUAL;
SELECT FLOOR(1.1) FROM DUAL;
#保留小数位数(四舍五入)
SELECT FORMAT(3.1415,3) FROM DUAL;
#求余
SELECT MOD(10,3) FROM DUAL;
#返回随机数,RAND([seed]),范围0~1.0, 使如果用RAND(seed) seed不变随机数也不变
SELECT RAND() FROM DUAL;
SELECT RAND(2) FROM DUAL;

#4.日期时间函数
#当前的时间(服务器时间),CURRENT_TIMESTAMP and CURRENT_TIMESTAMP() are synonyms for NOW()
# SYSDATE()返回执行当前函数的时间,而NOW()返回执行SQL语句时的时间
SELECT CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP,NOW(),SYSDATE(),SLEEP(2),SYSDATE(),NOW() FROM DUAL;
#获取日期、时间、年、月、日等
SELECT DATE(NOW()) FROM DUAL;
SELECT TIME(NOW()) FROM DUAL;
SELECT YEAR(NOW()) FROM DUAL;
SELECT MONTH(NOW()) FROM DUAL;
#日期加、减
SELECT DATE_ADD(NOW(),INTERVAL 10 YEAR) FROM DUAL;
SELECT DATE_SUB(NOW(),INTERVAL 10 MINUTE) FROM DUAL;
#计算相差多少天、相差多少时间
SELECT DATEDIFF('2020-01-05 23:23:23','2020-01-01 23:23:21') FROM DUAL;
SELECT TIMEDIFF('2020-01-05 23:23:23','2020-01-01 23:23:21') FROM DUAL;
#返回的是1970-1-1到现在的秒数,在时间开发中,可以存放一个整数表示时间,通过FROM_UNIXTIME()转换为日期
SELECT UNIX_TIMESTAMP() FROM DUAL;
SELECT FROM_UNIXTIME(1632565570,'%Y-%m-%d %h:%i:%s') FROM DUAL;

#5.加密函数
#MD5(str)
SELECT MD5('hello') FROM DUAL;

#6.流程控制函数
#IF(expr1,expr2,expr3):
SELECT IF(TRUE, '重庆', '上海') FROM DUAL;
#IFNULL(expr1,expr2)
SELECT IFNULL(NULL,'重庆') FROM DUAL;
#CASE WHEN
SELECT `name`,(SELECT CASE
                WHEN math >= 80 THEN '优秀'
                WHEN math BETWEEN 60 AND 80 THEN '及格'
                ELSE '不及格' END) AS pass FROM student;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值