MySQL学习--------字符函数,数学函数,日期函数,其他函数

1.字符函数

#字节长度
SELECT LENGTH("张三丰abcd");

#字符连接
SELECT CONCAT("abc","def");

#大小写
SELECT UPPER("sdsds");  #大写
SELECT LOWER("SDSADAD");  #小写

#截取字符串 substr或substring
SELECT SUBSTR("abcdefg",2,3);    #字符串,开始字符(从1开始),截取长度
SELECT SUBSTR("abcdefg",2);      #字符串,开始字符截取到末尾

#返回子串索引值 insrt(str,substr) 不存在返回0
SELECT INSTR("abcd","c");

#去除字符串开始和结束的特定字符
SELECT TRIM("   sd    ");
SELECT TRIM('a' FROM "aaabbbbbbaaaa");  #去除字符串开始和结束的特定字符

#字符填充  lpad  左填充,rpad  右填充
SELECT LPAD("abc",10,'d');   #原始字符串,填充后字符长度,填充字符串
SELECT RPAD("abc",10,"dfg");

#替换  replace
SELECT REPLACE("abcdeaadd",'a',"z");   #原始字符串,需要替换的字符串,替换字符串

 

2.数学函数


#四舍五入 round
SELECT ROUND(1.5);  #2
SELECT ROUND(-1.5);  #-2
SELECT ROUND(12.2344,2);  #数值,保留位数

#向上取整 ceil
SELECT CEIL(1.1);   #2
SELECT CEIL(1.0);  #1
SELECT CEIL(-1.2);  #-1

#向下取整  floor
SELECT FLOOR(1.2);  #1
SELECT FLOOR(-1.2);  #-2

#截取几位  truncate
SELECT TRUNCATE(1.256554,2);   #1.25

3.日期函数

#获取现在时间 now
SELECT NOW();   #2020-11-08 13:38:12
SELECT CURRENT_DATE();  #2020-11-08
SELECT CURRENT_TIME();  #13:38:49


#获取特定 年 月 日
SELECT YEAR(NOW());
SELECT MONTH(NOW());
SELECT DAY(NOW());

#字符串转日期类  str_to_date
SELECT STR_TO_DATE("1999-02-02 15:15:15","%Y-%m-%d %H:%i:%s");


#日期转字符串  date_format
SELECT DATE_FORMAT(NOW(),"%Y年%m月%d日 %H时%i分%s秒");

-- 今天日期+时间
select now() ;    --返回2018-04-25 17:33:21
-- 今天日期
select curdate();  --返回2018-04-25
-- 今天日期格式化
select date_format(curdate(),'%Y-%m-%d');  --返回2018-04-25

-- 昨天日期
select date_add(curdate(), interval -1 day);  --返回2018-04-24
-- 昨天日期格式化
select date_add(date_format(curdate(),'%Y-%m-%d'), interval -1 day);  2018-04-24


SELECT CURRENT_DATE-1 as date;     -- 20201221  转换为了int类型数据

 

4.其他函数

SELECT VERSION();
SELECT DATABASE();
SELECT USER();

5.流程控制函数

#流程控制函数
SELECT IF(10>2,"大","小");    #表达式,为真显示内容,为假显示内容

#case
SELECT CASE 10-5
	WHEN 5 THEN
		'5'
	WHEN 4 THEN
		'4'
	ELSE
		'6'
END;

#case实现多分支判断
SELECT CASE 
	WHEN 表达式1 THEN
		表达式1
	WHEN 表达式2 THEN
		表达式2
	ELSE
		statement_list
END CASE;

排序函数

区别RANK,DENSE_RANK和ROW_NUMBER

  • RANK并列跳跃排名,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,跳跃到总共的排名。
  • DENSE_RANK并列连续排序,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,依然按照连续数字排名。
  • ROW_NUMBER连续排名,即使相同的值,依旧按照连续数字进行排名。

 

SELECT score,
ROW_NUMBER() OVER (ORDER BY score DESC) ranking
FROM score;
SELECT course_id, score,
RANK() OVER(ORDER BY score DESC)
FROM score;
SELECT course_id, score,
DENSE_RANK() OVER(ORDER BY score DESC) FROM score;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值