4.MySQL常用函数

字符串函数

函数功能
CONCAT(S1,S2,…Sn)将S1,S2,…Sn练级额为一个字符串
INSERT(str,x,y,instr)将字符串str,从x位置开始,y个字符长度的子串替换为instr
LOWER(str)将字符串str所有字符转换为小写
UPPER(str)将字符串str中所有字符转换为大写
LEFT(str,x)返回字符串str左边的x个字符
RIGHT(str,x)返回字符串str右边的x个字符
LPAD(str,n,pad)用字符串pad对字符串左边进行填充,直到长度为n个字符长度
RPAD(str,n,pad)用字符串pad对字符串右边进行填充,直到长度为n个字符长度
LTRIM(str)去掉字符串左侧空格
RTRIM(str)去掉字符串右侧空格
REPEAT(str,x)将字符串str重复x次
REPLACE(str,a,b)用字符串b替换字符串str中出现的所有a字符串
STRCMP(s1,s2)比较字符串s1和s2
TRIM(str)去掉字符串str行尾和行头的所有字符串
SUBSTRING(str,x,y)返回字符串str x位置起y个长度的字符串
  • CONCAT(s1,s2,...sn)将多个字符串连接为一个字符串,任何字符串和NULL连接的结果都为NULL
select CONCAT('ads','133'),CONCAT('abc',NULL);	

在这里插入图片描述

  • INSERT(str,x,y,instr)将字符串str从x开始的y个字符替换为instr
select INSERT('Hello World',7,5,'MySQL');

在这里插入图片描述

  • LOWER(str)将字符串str全部转换为小写
select LOWER('bHUFRhjH');

在这里插入图片描述

  • UPPER(str)将字符串str转化位大写
select UPPER('jhssdgvTF');

在这里插入图片描述

  • LEFT(str,x)RIGHT(str,x)返回字符串str左边/右边的x个字符
select LEFT('BEIJIN',3),RIGHT('LOVE',2);

在这里插入图片描述

  • LPAD(str,n,pad)RPAD(str,n,pad)将字符串str左侧/右侧的字符用pad进行填充,直到长度为n个字符长度
select lpad('2008',20,'beijing'),rpad('beijing',20,'2008');

在这里插入图片描述

  • LTRIM(str)和``RTRIM(str)`去掉字符串str左侧/右侧的空格
select  LTRIM('   |b'),RTRIM('h|   ');

在这里插入图片描述

  • REPEAT(str,n)将字符串str重复n次
select REPEAT('Hello ',4);

在这里插入图片描述

  • REPLACE(str,a,b)将str中的a用b替换
select REPLACE('Hello World','World','MySQL');

在这里插入图片描述

  • STRCMP(s1,s2)比较字符串s1,s2的ASCII码值的大写,如果s1比s2小,返回-1,如果s1和s2相等,返回0,如果s1比s2大返回1
select STRCMP('java','python');

在这里插入图片描述

  • TRIM(str)去除str首尾空格
select TRIM('   |k|   ');

在这里插入图片描述

  • SUBSTRING(str,x,y)返回字符串str从x开始的y个字符
select  SUBSTRING('Hello',1,2);

在这里插入图片描述

数值函数

函数作用
ABS(x)返回x的绝对值
CEIL(x)返回大于x的最大整数值
FLOOR(x)返回小于x的最大整数值
MOD(x,y)返回x%y的值
RAND()返回0~1的随机值
ROUND(x,y)返回x四舍五入后有y个小数的值
TRUNCATE(x,y)返回数字x截断为y个小数的结果
  • ABS(x)返回x的绝对值
select ABS(-8),ABS(8);

在这里插入图片描述

  • CEIL(x)返回大于x的最大整数值
select CEIL(2.6),CEIL(2.1);

在这里插入图片描述

  • FLOOR(x)返回小于x的最大整数值
select FLOOR(3.9),FLOOR(3.1);

在这里插入图片描述

  • MOD(x,y)返回x%y的值
select MOD(5,2),5%2;

在这里插入图片描述

  • RAND()返回0~1的随机值
select RAND(),RAND();

在这里插入图片描述

  • ROUND(x,y),返回对x四舍五入后包含y位小数的值
select ROUND(2.5674,3); 

在这里插入图片描述

日期和时间类型函数

函数作用
CURDATE()返回当前日期
CURTIME()返回当前时间
NOW()返回当前的日期和时间
UNIX_TIMESTAMP(date)返回日期date的UNIX时间戳
FROM_UNIXTIME()返回UNIX时间戳的日期值
WEEK(date)返回日期date为一年中的第几周
YEAR(date)返回日期date的年份
HOUR(time)返回time的小时值
MIUNTE(time)返回time的分钟值
MONTHNAME(date)返回date的月份名
DATE_FORMAT(date,fmt)返回按字符串fmt格式化的date日期值
DATE_ADD(date,INTERVAL expr type)返回一个日期或时间值加上一个时间间隔的时间值
DATEDIFF(expr,expr2)返回起始时间expr和结束时间expr2之间的天数
  • CURDATE()返回当前日期值,只包含年月日
select CURDATE();

在这里插入图片描述

  • CURTIME()返回当前时间只包含时分秒
select CURTIME();

在这里插入图片描述

  • NOW()返回当前的日期和时间
select NOW();

在这里插入图片描述

  • UNIX_TIMESTAMP(date)返回date的UNIX时间戳
select UNIX_TIMESTAMP(NOW());

在这里插入图片描述

  • FROM_UNIUXTIME(unixtime)返回UNIX时间戳的日期值,与UNIX_TIMESTAMP(date)相反
select FROM_UNIXTIME(1597733300);

在这里插入图片描述

  • WEEK(date)和YEAR(date)前者返回的是给定日期为一年中的第几周,后者返回的是给定日期是那一年
select WEEK(NOW()),YEAR(NOW());

在这里插入图片描述

  • HOUR(time)MINUTE(time)前者返回的是给定时间的小时,后者返回的是给定时间的分钟
select HOUR(CURTIME()),MINUTE(CURTIME());

在这里插入图片描述

  • MONTHNAME(date)返回date对应的月份名称
select MONTHNAME(NOW());

在这里插入图片描述

  • DATE_FORMAT(date,fmt),按照字符串fmt格式化日期date,可以使用的格式符如下
格式符格式说明
%S,%s两位数字格式的秒(00,01,…,59)
%i两位数字格式的分(00,01,…,59)
%H两位数字的小时,24小时(0,1,…,24)
%h,%l两位数字的小时,12小时(0,1,…,12)
%k数字形式的小时,24小时(0,1,…,24)
%l数字形式的小时,12小时(0,1,…,12)
%T24小时的形式(hh:mm:ss)
%r12小时的形式(hh:mm:ssAM 或 hh:mm:ssPM)
%pAM或PM
%W一周中每一天的名称(Sunday,Monday,…,Saturday)
%a一周中每一天名称的缩写(Sun,Mon,…,Sat)
%d两位数字表示月中的天数(00,01,…,31)
%e数字表示月中的天数(1,2,…,31)
%D英文后缀表示月中的天数(1st,2nd,3rd…)
%w艺术字形式表示周中的天数(0=Sunday,1=Monday,…,6=Saturday)
%j以三位数字表示年中的天数(001,002,…336)
%U周(0,1,52),其中Sunday为周中的第一天
%u周(0,1,52),其中Monday为周中的第一天
%M月名,(January,February,…,December)
%b缩写的月份(Jan,Feb,…Dec)
%m两位数字表示的月份(01,02,…,12)
%c数字表示的月份(1,2,…12)
%Y4位数字表示的年
%y两位数字表示的年
%%直接值
select DATE_FORMAT(NOW(),'%Y年%m月%d日 %H时%i分%S秒');

在这里插入图片描述

  • DATE_ADD(date,INTERVAL expr type)返回与给定日期相差INTERVAL时间段的时间,其中INTERVAL是时间间隔类型,expr是一个表达式,type是间隔类型,MySQL提供了13中间隔类型.
表达式类型描述格式
HOUR小时hh
MINUTE分钟mm
SECONDss
YEARYY
MONTHMM
DAYDD
YEAR_MONTH年月YY-MM
DAY_HOUR日和时DD hh
DAY_MINUTE日和分钟DD hh:mm
DAY_SECOND日和秒DD hh:mm:ss
HOUR_MIUNTE时和分钟hh:mm
HOUR_SECOND时和秒hh:ss
MINUTE_SECOND分钟和秒mm:ss
select NOW() CURRENT,DATE_ADD(NOW(),INTERVAL 31 DAY) AFTER_31_DAYS,DATE_ADD(NOW(),INTERVAL '1_2' YEAR_MONTH) AFTER_1YEAR_2MONTH;

在这里插入图片描述

  • DATEDIFF(date1,date2)计算两个日期相差的天数
select DATEDIFF('20210101',now());

在这里插入图片描述

流程函数

流程函数也是很常用的一类函数,用户可以使用这类函数在一个 SQL 语句中实现条件选择,这样做能够提高语句的效率

函数作用
IF(value,t ,f)如果value为真,返回t,否则返回f
IFNULL(value1,value2)如果value1不为空返回value1,否则返回value2
CASE WHEN [value1] THEN[result1]…ELSE[default] END如果value1是真,返回result1,否则返回default
CASE[expr] WHEN[value1] THEN[result1] …ELSE[default]END如果expr等于value1,返回result1,否则返回default

创建员工薪水表

 create table salary (userid int,salary decimal(9,2));

插入测试数据

 insert into salary values(1,1000),(2,2000), (3,3000),(4,4000),(5,5000), (1,null);
  • IF(value,t,f)如果员工薪水大于3000显示为’high’,否则显示为’low’
select IF(salary>3000,'high','low') from salary;	

在这里插入图片描述

  • IFNULL(value1,value2)常用来替换NULL的
select IFNULL(salary,0) from salary;

在这里插入图片描述

  • CASE WHEN 来实现高底薪
select CASE WHEN salary >=2000 then 'higt' ELSE 'low' END  from salary;

在这里插入图片描述

其他常用函数

函数名作用
DATABASE()返回当前数据库名
VERSION()返回当前数据库版本
USER()返回当前登录用户名
INET_ATON(IP)返回IP地址的数字表示
INET_NTOA(num)返回数字代表的IP地址
PASSWORD(str)返回字符串str的加密版本
MD5(str)返回字符串str的MD5值
  • DATABASE
select DATABASE();

在这里插入图片描述

  • VERSION()
select VERSION();

在这里插入图片描述

  • USER()
select USER();

在这里插入图片描述

  • INET_ATON(ip)
select INET_ATON('192.168.31.51');

在这里插入图片描述

  • INET_NTOA(num)
select INET_NTOA(3232243507);

在这里插入图片描述

  • PASSWORD(str)
select PASSWORD('ihgyugjui4564');

在这里插入图片描述

  • MD5(str)
select MD5('sfcsf4778x');

在这里插入图片描述

  • INET_ATON(ip)
select INET_ATON('192.168.31.51');

在这里插入图片描述

  • INET_NTOA(num)
select INET_NTOA(3232243507);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姑苏_IT

创作不易,谢你打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值