MYSQL常用函数 读书笔记

在这里插入图片描述
此书的学习笔记

字符串函数

函数功能用例
查询字符串信息
length(string)string的字节个数LENGTH(‘adc哈’) -> 6
char_length(string)string的字符个数char_length(‘abc哈’) -> 4
charset(str)返回字串字符集charset(‘qwe’) -> utf8
拼接类型
CONCAT(S1,S2,…Sn)把传入的参数连接成为一个字符串
任何字符串与NULL进行连接的结果都将是NULL
concat(‘aaa’, ‘bbb’, ‘ccc’) ->aaabbbccc
concat(‘aaa’,null) -> Null
LPAD(str,n,pad) 和 RPAD(str,n,pad)用字符串pad对str最左边和最右边进行填充,直到长度为n个字符长度。lpad(‘2008’,20,‘beijing’) -> beijingbeijingbe2008
rpad(‘beijing’,20,‘2008’) -> beijing2008200820082
REPEAT(str,x)返回str重复x次的结果repeat('mysql ',3) -> mysql mysql mysql
截取类型
substring(str, position [,length])从str的position开始,取length个字符
下标从1开始
substring(‘beijing2008’,8,4) -> 2008
substring(‘beijing2008’,1,7) -> beijing
substring(‘beijing2008’,3) -> ijing2008
LEFT(str,x) 和 RIGHT(str,x)分别返回字符串最左边的x个字符和最右边的x个字符。
如果第二个参数是NULL,那么将不返回任何字符串。
下标从1开始
LEFT(‘beijing2008’,7) -> beijing
LEFT(‘beijing’,null) -> Null
RIGHT(‘beijing2008’,4) -> 2008
替换类型
replace(str ,search_str ,replace_str)在 str 中用 replace_str 替换 search_strreplace(‘beijing_2010’,’_2010’,‘2008’) -> beijing2008
INSERT(str,x,y,instr)将字符串str从第x位置开始,y个字符长的子串替换为字符串instr
下标从1开始
INSERT(‘beijing2008you’,12,3, ‘me’)
-> beijing2008me
instr(string ,substring)返回substring首次在string中出现的位置instr(‘qwer’ ,‘e’) -> 3
locate(substring, string [,start_position])同instr,但可指定开始位置locate(‘qw’, ‘qwertqw’ ,3) -> 6
去空格
LTRIM(str) 和 RTRIM(str)去掉字符串str左侧和右侧空格ltrim(’ beijing’) -> beijing
rtrim('beijing ') -> beijing
TRIM(str)去掉目标字符串的开头和结尾的空格trim(’ $ beijing2008 $ ') -> $ beijing2008 $
STRCMP(s1,s2)比较字符串s1和s2的ASCII码值的大小。
S1<S2 -1
S1=S2 0
S1>S2 1
strcmp(‘a’,‘b’) -> -1
strcmp(‘b’,‘b’) -> 0
strcmp(‘c’,‘b’) -> 1
LOWER(str) 和 UPPER(str)把字符串转换成小写或大写LOWER(‘BEIJING2008’) -> beijing2008
UPPER(‘beijing2008’) -> BEIJING2008
load_file(file_name)从文件读取内容

在这里插入图片描述

数值函数

函数功能用例
pi()获得圆周率pi() -> 3.141593
pow(m, n)m^npow(3, 2) = 9
sqrt(x)算术平方根sqrt(9) = 3
format(x, d)格式化千分位数值format(1234567.456, 2) = 1,234,567.46
abs(x)返回x的绝对值abs(-0.8) =0.8
abs(0.8) =0.8
CEIL(x)返回大于x的最小整数CEIL(-0.8) =0
CEIL(0.8) =1
FLOOR(x)返回小于x的最大整数,和CEIL的用法刚好相反。FLOOR(-0.8) =-1
FLOOR(0.8) =0
round(x,y)返回参数x的四舍五入的有y位小数的值。
如果是整数,将会保留y位数量的0;
如果不写y,则默认y为0,即将x四舍五入后取整。
ROUND(1.234,2) =1.23
ROUND(1.235,2) =1.24
ROUND(1,3) = 1
ROUND(1.4) = 1
ROUND(1.5) = 2
ROUND(1.1,2) =1.1
TRUNCATE(x,y)返回数字x截断为y位小数的结果
注意TRUNCATE和ROUND的区别在于TRUNCATE仅仅是截断,而不进行四舍五入
TRUNCATE(1.234,2) =1.23
TRUNCATE(1.235,2) =1.23
MOD(x,y)
x%y的结果相同
返回x/y的模。
模数和被模数任何一个为NULL结果都为NULL
MOD(15,10) =5
MOD(1,11) =1
MOD(NULL,10) =Null
RAND()返回0~1内的随机值
利用此函数可以取任意指定范围内的随机数
RAND() =0.8762537929008285
RAND() =0.32581121132318974
ceil(100 * rand()) =1
ceil(100 * rand()) =3

在这里插入图片描述

日期和时间函数

函数功能用例
NOW() / CURRENT_TIMESTAMP()返回当前的日期和时间,年月日时分秒全都包含NOW() -> 2021-11-07 21:54:54
CURDATE() / CURRENT_DATE() / date(now())返回当前日期,只包含年月日CURDATE() -> 2021-11-07
CURRENT_DATE () -> 2021-11-07
date(now()) -> 2021-11-07
CURTIME() / CURRENT_TIME() / time(now())返回当前时间,只包含时分秒CURTIME() ->21:54:54
CURRENT_TIME () -> 21:54:54
time(now()) -> 21:54:54
YEAR(DATE)返回所给的日期是哪一年YEAR(now()) -> 2021
MONTHNAME(date)返回date的英文月份名称MONTHNAME(now()) -> November
WEEK(DATE)返回所给的日期是一年中的第几周WEEK(now()) -> 45
HOUR(time)返回所给时间的小时HOUR(CURTIME()) ->23
MINUTE(time)返回所给时间的分钟MINUTE(CURTIME()) ->34
UNIX_TIMESTAMP(date)返回日期date的UNIX时间戳UNIX_TIMESTAMP(now()) ->1636293419
FROM_UNIXTIME(unixtime)返回 UNIXTIME 时间戳的日期值,
和 UNIX_TIMESTAMP(date)互为逆操作
FROM_UNIXTIME(1636293419) ->2021-11-07 21:56:59
DATE_FORMAT(date,fmt)按字符串 fmt 格式化日期 date 值
格式参考图1
DATE_FORMAT(now(),’%M,%D,%Y’) -> November,7th,2021
DATEDIFF(date1,date2)用来计算两个日期之间相差的天数DATEDIFF(‘2022-08-08’,now()) -> 274
DATE_ADD(date,INTERVAL expr type)返回与所给日期date相差 INTERVAL时间段的日期
格式参考图2
now() -> 2021-11-07 23:39:00
date_add(now(), INTERVAL 31 DAY) ->2021-12-08 23:39:00
date_add(now(),INTERVAL ‘1_2’ year_month) ->2023-01-07 23:39:00
date_add(now(), INTERVAL -31 DAY) ->2021-10-07 23:39:00
date_add(now(),INTERVAL ‘-1_-2’ year_month) ->2020-09-07 23:39:00

图1:

在这里插入图片描述

图2:

在这里插入图片描述
在这里插入图片描述

流程函数

函数功能用例
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);
1000.00
2000.00
3000.00
4000.00
5000.00
NULL
IF(value,t,f)select if(salary>2000, ‘high’, ‘low’) from salarylow
low
high
high
high
low
IFNULL(value1,value2)这个函数一般用来替换 NULL 值,我们知道 NULL 值是不能参与数值运算的
select ifnull(salary,0) from salary;
1000.00
2000.00
3000.00
4000.00
5000.00
0.00
case when [condition] then result [when [condition] then result …] [else result] endselect case when salary<=2000 then ‘low’ else ‘high’ end from salarylow
low
high
high
high
high
CASE [expr] WHEN [value1] THEN[result1]…ELSE[default]ENDselect case salary when 1000 then ‘low’ when 2000 then ‘mid’ else ‘high’ end from salary;low
mid
high
high
high
high
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值