MySQL(3)--SQL函数

MySQL函数

数字函数

  • CEIL(x)/CEILING(x) 向上取整
select ceil(column_name) from table_name;
  • FLOOR(x) 向下取整
select floor(column_name) from table_name;
  • POW(x,y)/POWER(x,y) 返回 x 的 y 次方
select name,age,POW(age,2) from students;
  • RAND() 返回 0 到 1 的随机数
select name,age,rand() from students;
  • ROUND(x) 返回离 x 最近的整数
-- round(x,d) x保留d位小数
select 
	clazz
	,round(avg(age),2) as avg_age
from students
group by clazz
having avg(age)>22.5

-- round(x) 返回离x最近的小数
select 
	clazz
	,avg(age)
	,round(avg(age)) as avg_age
from students
group by clazz

字符串函数

  • LENGTH 字节数 CHAR_LENGTH(s)/CHARACTER_LENGTH(s)返回字符串 s 的字符数
select clazz,LENGTH(clazz),CHAR_LENGTH(clazz),CHARACTER_LENGTH(clazz) from students;

select LENGTH('wyl'),CHAR_LENGTH('wyl');
  • CONCAT(s1,s2…sn)字符串 s1,s2 等多个字符串合并为一个字符串
-- 注意: 如果有一个字符串为空  则结果为空
select *,CONCAT(name,',',email,',',password) from users;
  • CONCAT_WS(separator, str1, str2, …)指定分隔符的拼接
-- 可以指定分割符
-- 遇到为null的值 结果合并会忽略他
select *,CONCAT_ws('#',name,email,password) from users;
  • SUBSTR/SUBSTRING(s, start, length)从字符串 s 的 start 位置截取长度为 length 的子字符串
select *,SUBSTR(clazz,1,2) from students
  • STRCMP(s1,s2)比较字符串 s1 和 s2,如果 s1 与 s2 相等返回 0 ,如果 s1>s2 返回 1,如果 s1<s2 返回 -1
-- 返回值是0  则字符串相等
select *,STRCMP(clazz,'文科六班\r') from students

日期函数

  • CURDATE()/CURRENT_DATE()返回当前日期
SELECT CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP
  • CURRENT_TIME()/CURTIME()返回当前时间
  • CURRENT_TIMESTAMP()返回当前日期和时间
  • DATEDIFF(d1,d2)计算日期 d1->d2 之间相隔的天数
SELECT DATEDIFF('2024-05-07','1908-12-04')
  • TIMEDIFF(time1, time2)计算时间差值
select TIMEDIFF('10:58:00','09:00:00')
  • UNIX_TIMESTAMP()得到时间戳
SELECT UNIX_TIMESTAMP()
  • FROM_UNIXTIME()时间戳转日期
select FROM_UNIXTIME(UNIX_TIMESTAMP()-10*24*60*60)
  • DATE_ADD(d,INTERVAL expr type)从日期增加指定的时间间隔。
SELECT DATE_ADD(hire_date,interval -10 day) from emp;
SELECT DATE_ADD(hire_date,interval 10 month) from emp;
  • DATE_SUB(date,INTERVAL expr type)函数从日期减去指定的时间间隔。
SELECT DATE_SUB(hire_date,interval 10 day) from emp
  • DATE_FORMAT(d,f)表达式 f的要求显示日期 d
select DATE_FORMAT(CURRENT_DATE,'%Y-%m-%d %H:%i:%S');

select DATE_FORMAT(CURRENT_DATE,'%m%d %Y');
  • STR_TO_DATE(string, format_mask)将字符串转变为日期
select STR_TO_DATE('2024王雨龙05朱超07张雪','%Y王雨龙%m朱超%d张雪');
-- 获取 日期的年份 月份 日  过了多少周(从0计数) 周几 过了多少周
select 
	YEAR('2024-05-07')
	,MONTH('2024-05-07')
	,day('2024-05-07')
	,week('2024-05-07')
	,WEEKDAY('2024-05-07')
	,WEEKOFYEAR('2024-05-07')
	
-- 你出生的那一天是当年的多少周 '2000-07-30'
-- 当年的那一周映射到今年是那一天到那一天

select 
	WEEKOFYEAR(DATE_ADD('2000-07-30',INTERVAL 24 year))
	,WEEKDAY(DATE_ADD('2000-07-30',INTERVAL 24 year))
	,DATE_ADD(DATE_ADD('2000-07-30',INTERVAL 24 year),INTERVAL -8 day)
	,DATE_ADD(DATE_ADD('2000-07-30',INTERVAL 24 year),INTERVAL -2 day)

高级函数

  • IF(expr,v1,v2)如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2
select 
	*
	,if(age=21,'1',if(age=22,'2',if(age=23,'3','4'))) 
from students;
  • IFNULL(v1,v2) 如果 v1 的值不为 NULL,则返回 v1,否则返回 v2。
select name,IFNULL(email,'888@qq.com') from users;
  • **CASE (WHEN THEN) + ELSE END **
-- CASE  (WHEN condition THEN val) + ELSE END
select 
	*
	,case 
		when age=21 then '1'
		when age=22 then '2' 
		when age=23 then '3' 
		when age=24 then '4'
		else '5' end
from students
  • CAST(x AS type)转换数据类型
-- 支持的转换类型 BINARY、CHAR、DATE、DATETIME、TIME、DECIMAL
select CAST(age AS DECIMAL) from students;
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值