您的当前位置:首页>全部文章>文章详情

MySQL-常用函数:字符串函数、数学函数、时间日期转换函数、类型转换函数、条件函数

欧老板发表于:2023-01-16 16:01:14浏览:644次TAG: #MySql

字符串函数

CONCAT(a,b,c,……)

解释:字符串 a,b,c 等多个字符串合并为一个字符串

例:

SELECT CONCAT("我", "爱", "吃", "西瓜", "!") AS interest; --输出 我爱吃西瓜

FORMAT(x,n)

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

例如:

SELECT FORMAT(3.1415926, 2); -- 输出 3.14

SUBSTR(s, start, length)

解释:从字符串 s 的 start 位置截取长度为 length 的子字符串

例如:

SELECT SUBSTR("helloMySQL", 1, 3) AS str; --输出 hel

REPLACE(s,s1,s2)

解释:将字符串 s2 替代字符串 s 中的字符串 s1

例如:

SELECT REPLACE('abc','a','v') ;--输出vbc

INSERT(s1,x,len,s2)

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

例如:

SELECT INSERT("baidu.com", 1, 5, "71av"); -- 输出:71av.com

数学函数

ABS(m)

解释:返回 m 的绝对值 

例如:

SELECT ABS(-5) -- 输出5

AVG(m)

解释:返回字段m在分组中的平均值

例如:

SELECT AVG(num) AS 销售额 FROM city_num ;

CEIL(m)

解释:返回大于或等于 m 的最小整数

例如:

SELECT CEIL(4.5) -- 输出 5

COUNT(m)

解释:返回查询的记录总数,expression 参数是一个字段或者 * 号

例如:

SELECT COUNT(student_ID) AS student FROM class; --统计班级中学生个数(学生id唯一)

若有重复id,可以使用关键字 distinct 去重:

例如:

SELECT COUNT(distinct student_ID) AS student FROM class;

另外统计全部记录数时,可以使用count(1)和count(*),两者区别:

执行效果上:

count(1)其实就是计算一共有多少符合条件的行,1并不是表示第一个字段,而是表示一个固定值。

其实就可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1。count(*)执行时会把星号翻译成字段的具体名字,效果也是一样,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。

执行效率上:

MySQL 会对count(*)做优化。

如果表中只有一列,则count(* )效率最优。

如果表有多列,且存在主键,效率为:count (主键列名)>count (1) >count( *)。

如果表有多列,且不存在主键,效率为:count(1 )>count( *)。

从执行结果来说:

count(1)和count ()之间没有区别,因为count () count (1)都不会去过滤。

(排除)空值,但count (列名)就有区别了,因为count (列名)会过滤空值。

POW(x,y)

解释:返回 x 的 y 次方 

例如:

SELECT POW(2,4) --输出 16

MIN(m)、MAX(M)

解释:返回m列的最大值最小值 m=[2,4,5,6,7,8,9,0]

例如:

SELECT MAX(M),MIN(M) --输出 9,0

MySQL 日期函数

ADDDATE(d,n)

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

例如:

SELECT ADDDATE("2022-12-20", INTERVAL 10 DAY); --输出2022-12-30

ADDTIME(t,n)

解释:n 是一个时间表达式,时间 t 加上时间表达式 n n类型:hh:mi:ss

例如:

SELECT ADDTIME('2022-12-30 12:21:11', 5); --增加5秒 输出: 2022-12-30 12:21:16

SELECT ADDTIME('2022-12-30 12:21:11', 6:15); --增加6分15秒 输出: 2022-12-30 12:27:30

SELECT ADDTIME('2022-12-30 12:21:11', 1:6:15); --增加1小时6分15秒 输出: 2022-12-30 13:27:30

CURDATE()、CURRENT_DATE()

解释:返回当前日期

CURRENT_TIME、CURTIME()

解释:返回当前时间

CURRENT_TIMESTAMP()

解释:返回当前日期和时间

DATE()

解释:从日期或日期时间表达式中提取日期值

例如:

SELECT DATE("2022-12-30"); --输出 2022-12-30

DATEDIFF(d1,d2)

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

例如:

SELECT DATEDIFF('2022-12-20','2022-12-30') --输出10

DATE_ADD(d,INTERVAL expr type)

解释:

计算起始日期 d 加上一个时间段后的日期,type 值可以是:MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR。。。。。。

例如:

SELECT DATE_ADD(" 2022-12-20", INTERVAL 10 DAY);

-> 2022-12-30

SELECT DATE_ADD(" 2022-12-30 09:34:21", INTERVAL 15 MINUTE);

-> 2022-12-30 09:49:21

SELECT DATE_ADD(" 2022-12-30 09:34:21", INTERVAL -3 HOUR);

-> 2022-12-30 06:34:21

SELECT DATE_ADD(" 2022-12-30 09:34:21", INTERVAL -3 MONTH);

-> 2022-9-30

DATE_FORMAT(d,f)

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

例如:

SELECT DATE_FORMAT('2022-12-30 11:11:11','%Y-%m-%d %r')

-> 2022-12-30 11:11:11 AM

DAY(d)

解释:返回日期值 d 的日期部分

例如:

SELECT DAY("2022-12-30"); --输出 30

DAYNAME(d)、DAYOFWEEK(d)

解释:DAYNAME返回日期 d 是星期几,如 Monday,Tuesday;DAYOFWEEK返回星期几,如,1,2

例如:

SELECT DAYNAME('2022-12-26 11:11:11') --输出 Monday

DAYOFMONTH(d)

解释:计算日期 d 是本月的第几天

例如:

SELECT DAYOFMONTH('2022-12-26 11:11:11') --输出 26

STR_TO_DATE(string, format_mask)

解释:将字符串转变为日期

例如:

SELECT STR_TO_DATE("August 10 2022", "%M %d %Y"); --输出 20222-08-10

类型转换函数

CAST(x AS type)

解释:转换数据类型

例如:

SELECT CAST("2022-12-29" AS DATE) ; SELECT CAST("123" AS bigint);

条件函数

CASE WHEN condition1 THEN result1
WHEN condition2 THEN result2

...

WHEN conditionN THEN resultN

ELSE result

END

解释:判断条件1是否满足,满足输出结果1,判断条件2是否满足,满足输出结果2,……否则,输出结果result

例如:

SELECT case when name_id = 1 then '张无忌'

when name_id = 2 then '郭靖'

when name_id = 3 then '杨过'

else '小龙女' 
```;

### COALESCE(e1, e2, ...., e_n)
解释:返回参数中的第一个非空表达式(从左向右)

例如:
```sql
SELECT COALESCE(NULL, NULL, 'run', NULL, 'goo');--输出 run

NULLIF(e1, e2)

解释:比较两个字符串,如果字符串 e1 与 e2 相等 返回 NULL,否则返回 e1

例如:

SELECT NULLIF('你好', '你好');

IF(e,v1,v2)

解释:如果表达式 e 成立,返回结果 v1;否则,返回结果 v2。

例如:

SELECT IF(1 > 0,'正确','错误')

IFNULL(v1,v2)

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

例如:

SELECT IFNULL(null,'Hello Word')
栏目分类全部>
腾讯云采购季云服务器一折促销
0.052770s