mysql常用函数备忘录

字符串函数

函数

描述

示例

CONCAT_WS(x, s1,s2…sn)

字符串 s1,s2 等多个字符串合并为一个字符串,每个字符串之间要加上 x,x 可以是分隔符

select concat_ws(‘-‘,’a’,’b’,’c’);

结果:a-b-c

FIELD(s,s1,s2…)

返回第一个字符串 s 在字符串列表(s1,s2…)中的位置

select field(‘a’,’b’,’c’,’a’,’a’);

结果:3

FIND_IN_SET(s1,s2)

返回在字符串s2中与s1匹配的字符串的位置,s2通常是逗号分隔的字符串,s1,s2可以是表的字段,但s2需要以逗号分隔

SELECT FIND_IN_SET(‘b’, ‘a,b,b,c,d,e’);

结果:2

SELECT FIND_IN_SET(‘add’, permissions) from user;

查找user表的permissions字段是否存在字符串:add

FORMAT(x,n)

将数字 x 进行格式化 “#,###.##”, 将 x 保留到小数点后 n 位,最后一位四舍五入。

select format(1414151278324.4263461, 2);

结果:1,414,151,278,324.43

INSERT(s1,x,len,s2)

字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串

select insert(‘testabc’,4,5, ‘zxcvbkjk’);

输出:teszxcvbkjk

select insert(‘testabc’,4,2, ‘zxcvbkjk’);

输出:teszxcvbkjkbc

LOCATE(s1,s)

从字符串 s 中获取 s1 的开始位置

select LOCATE(‘abc’,’123abcabc’);

结果:4

select LOCATE(‘abc1′,’123abcabc’);

结果:0

LEFT(s,n)

返回字符串 s 的前 n 个字符

select LEFT(‘njlaffgf’,3);

结果:njl

LPAD(s1,len,s2)

在字符串 s1 的开始处填充字符串 s2,使字符串长度达到 len

select lpad(‘abc’,5,’0000′);

结果:00abc

select lpad(‘abc’,3,’0000′);

结果:abc

POSITION(s1 IN s)

从字符串 s 中获取 s1 的开始位置,s1和s可以是表的两个字段

select position(‘abc’ in ‘123abc456’);

结果:4

select position(name in email) from user;

REPEAT(s,n)

将字符串 s 重复 n 次

select repeat(‘123’,3);

结果:123123123

select REPEAT(name,3) from user;

REPLACE(s,s1,s2)

将字符串 s2 替代字符串 s 中的字符串 s1

select replace(‘abc123def’,’123′,’***5′);

结果:abc***5def

RIGHT(s,n)

返回字符串 s 的后 n 个字符

select right(‘abc123’,2);

结果:23

select right(email,3) from user;

RPAD(s1,len,s2)

在字符串 s1 的结尾处添加字符串 s2,使字符串的长度达到 len

select rpad(‘abc’,5,’0000′);

结果:abc00

select rpad(‘abc’,3,’0000′);

结果:abc

数字函数

函数

描述

示例

CEIL(x)

返回大于或等于 x 的最小整数

select ceil(1.6)

结果:2

select ceil(-1.6)

结果:-1

FLOOR(x)

返回小于或等于 x 的最大整数

select floor(1.6)

结果:1

select floor(-1.6)

结果:-2

GREATEST(expr1, expr2, expr3, …)

返回列表中的最大值

select greatest(4,2,6,2,555.22,23);

结果:555.22

select greatest(‘abc’,’zzx’,’zbc’);

结果:zzx

select greatest(age, version) from user;

LEAST(expr1, expr2, expr3, …)

返回列表中的最小值

select least(4,2,6,2,555.22,23);

结果:2.00

select least(‘abc’,’zzx’,’zbc’);

结果:abc

select least(age, version) from user;

RAND()

返回 0 到 1 的随机数

select rand();

结果:0.5861002519597301

ROUND(x [,y])

返回离 x 最近的整数,可选参数 y 表示要四舍五入的小数位数,如果省略,则返回整数。

SELECT ROUND(1.23456);

结果:1

SELECT ROUND(345.156, 2);

结果:345.16

TRUNCATE(x,y)

返回数值 x 保留到小数点后 y 位的值(与 ROUND 最大的区别是不会进行四舍五入)

SELECT truncate(345.156, 2);

结果:345.15

日期函数

函数

描述

示例

ADDDATE(d,n)

计算起始日期 d 加上 n 天的日期

select adddate(current_timestamp, 3);

结果:2023-03-30 10:35:54

select adddate(current_timestamp, -3);

结果:2023-03-24 10:36:07

select adddate(current_timestamp,interval 10 hour )

结果:2023-03-27 20:36:20

select adddate(current_timestamp,interval -10 hour )

结果:2023-03-27 00:36:34

ADDTIME(t,n)

n 是一个时间表达式,时间 t 加上时间表达式 n

n是数字式,默认是秒

select addtime(‘2023-03-27 10:41:42’,5);

当前:2023-03-27 10:41:42,结果:2023-03-27 10:41:47

select addtime(‘2023-03-27 10:41:42′,’2:00:00’);

当前:2023-03-27 10:41:42,结果:2023-03-27 12:41:42

DATEDIFF(d1,d2)

计算日期 d1->d2 之间相隔的天数

select datediff(‘2023-03-27 10:46:58′,’2023-03-29 10:46:58’)

结果:-2

DATE_ADD(d,INTERVAL expr type)

计算起始日期 d 加上一个时间段后的日期,type 值可以是:

  • MICROSECOND

  • SECOND

  • MINUTE

  • HOUR

  • DAY

  • WEEK

  • MONTH

  • QUARTER

  • YEAR

  • SECOND_MICROSECOND

  • MINUTE_MICROSECOND

  • MINUTE_SECOND

  • HOUR_MICROSECOND

  • HOUR_SECOND

  • HOUR_MINUTE

  • DAY_MICROSECOND

  • DAY_SECOND

  • DAY_MINUTE

  • DAY_HOUR

  • YEAR_MONTH

select date_add(‘2023-03-27 10:46:58’,interval 5 hour);

结果:2023-03-27 15:46:58

select date_add(‘2023-03-27 10:46:58’,interval 5-3 day);

结果:2023-03-29 10:46:58

DATE_FORMAT(d,f)

按表达式 f的要求显示日期 d

select date_format(current_timestamp,’%Y/%m/%d %H:%i:%S’);

结果:2023/03/27 11:16:04

DATE_SUB(date,INTERVAL expr type)

从日期减去指定的时间间隔。

select date_sub(‘2023-03-27 10:46:58’, interval 3 hour );

结果:2023-03-27 07:46:58

select date_sub(‘2023-03-27 10:46:58’, interval -3 hour );

结果:2023-03-27 13:46:58

EXTRACT(type FROM d)

从日期 d 中获取指定的值,type 指定返回的值。
type可取值为:

  • MICROSECOND

  • SECOND

  • MINUTE

  • HOUR

  • DAY

  • WEEK

  • MONTH

  • QUARTER

  • YEAR

  • SECOND_MICROSECOND

  • MINUTE_MICROSECOND

  • MINUTE_SECOND

  • HOUR_MICROSECOND

  • HOUR_SECOND

  • HOUR_MINUTE

  • DAY_MICROSECOND

  • DAY_SECOND

  • DAY_MINUTE

  • DAY_HOUR

  • YEAR_MONTH

select extract(minute from ‘2023-03-27 10:46:58’);

结果:46

unix_timestamp(d)

d是日期格式参数,日期格式转时间戳

select unix_timestamp(‘2023/3/27 12:00:00’);

结果:1679889600

from_unixtime(t)

t是整型参数,时间戳转日期格式

select from_unixtime(1679889600);

结果:2023-03-27 12:00:00

高级函数

函数

描述

示例

IF(expr,v1,v2)

如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。

select IF(0,’success’,’error’);

结果:error

select IF(3>2,’success’,’error’);

结果:success

IFNULL(v1,v2)

如果 v1 的值不为 NULL,则返回 v1,否则返回 v2。

select ifnull(null, ‘default’);

结果:default

select ifnull(6, ‘default’);

结果:6

select ifnull(product_code,’NONE’) from t_product;

ISNULL(expression)

判断表达式是否为 NULL

select isnull(null)

结果:1

select isnull(5)

结果:0



日期时间格式化


格式

描述

%a

缩写星期名

%b

缩写月名

%c

月,数值

%D

带有英文前缀的月中的天

%d

月的天,数值(00-31)

%e

月的天,数值(0-31)

%f

微秒

%H

小时 (00-23)

%h

小时 (01-12)

%I

小时 (01-12)

%i

分钟,数值(00-59)

%j

年的天 (001-366)

%k

小时 (0-23)

%l

小时 (1-12)

%M

月名

%m

月,数值(00-12)

%p

AM 或 PM

%r

时间,12-小时(hh:mm:ss AM 或 PM)

%S

秒(00-59)

%s

秒(00-59)

%T

时间, 24-小时 (hh:mm:ss)

%U

周 (00-53) 星期日是一周的第一天

%u

周 (00-53) 星期一是一周的第一天

%V

周 (01-53) 星期日是一周的第一天,与 %X 使用

%v

周 (01-53) 星期一是一周的第一天,与 %x 使用

%W

星期名

%w

周的天 (0=星期日, 6=星期六)

%X

年,其中的星期日是周的第一天,4 位,与 %V 使用

%x

年,其中的星期一是周的第一天,4 位,与 %v 使用

%Y

年,4 位

%y

年,2 位


原文始发于微信公众号(小新成长之路):mysql常用函数备忘录

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/238649.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!