round()

在mysql中,round函数用于数据的四舍五入,它有两种形式:

round(x,d) # x指要处理的数,d是指保留几位小数

这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0; d可以是正数,这时是指定小数点右边的d位整数位为0,同时小数位均为0。

round(x) #其实就是round(x,0),也就是默认d为0

实例
查询: select round(1123.26723,2);
结果:1123.27

DATE_FORMAT()

用于以不同的格式显示日期/时间数据。
语法

1
DATE_FORMAT(date,format)

date 参数是合法的日期。format 规定日期/时间的输出格式。

timestampdiff()

时间差函数:TIMESTAMPDIFF

1
TIMESTAMPDIFF (unit,beginend

beginend是指时间的起始和结束时间。可以为DATE或DATETIME类型,并且可允许参数为混合类型。
unit参数是确定(end-begin)时间差的单位,单位值如下表:

单位 MySQL(UNIT) DB2(UNIT)
毫秒 1
second 2
分钟 minute 4
小时 hour 8
day 16
week 32
month 64
quarter 128
year 256

注意 ,当传入混合参数时end-begin 不足 1个unit的时候 为0.
例如
SELECT TIMESTAMPDIFF (day,”2022-10-19 09:43:21”,”2022-10-20 00:00:00”); 值为0
SELECT TIMESTAMPDIFF (day,”2022-10-19 09:43:21”,”2022-10-20”); 值为0
SELECT TIMESTAMPDIFF (day,”2022-10-19”,”2022-10-20”); 值为1
SELECT TIMESTAMPDIFF (day,”2022-10-19 09:43:21”,”2022-10-19 00:00:00”); 值为0

AVG()

函数通过计算返回的行数和每一行数据的和,求得指定列数据的平均值。

case when语句

case when语句,用于计算条件列表并返回多个可能结果表达式之一。

CASE 具有两种格式:简单 CASE 和复合 CASE。
简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。
CASE 搜索函数计算一组布尔表达式以确定结果。
两种格式都支持可选的 ELSE 参数。

用法1

如果想得到一列布尔值,可以用case when…then…else…end语句得到。
case when…then…else…end语句的逻辑为:
case when 条件 then value_a else value_b end该语句表示:
当条件成立时,值为value_a,不成立时值取value_b。

用法2

case when…then…else…end语句进行逻辑判断,加工得到新的字段。
比如:你有一批用户,他们的资产水平各不相同,你想要对用户进行划分:资产<5000,为普通用户;5000=<资产<50000,为潜力用户;50000=<资产<500000,为高级用户;500000=<资产,为私用银行用户。

查询语句:

1
2
3
4
5
6
7
select id ,total_asset,
case when total_asset <5000 then '普通用户'
when total_asset < 50000 then '潜力用户'
when total_asset < 500000 then '高端用户'
else '私用银行用户'
end as type --重新命名为type
from xiaofeishuiping;

用法3

case when…then…else…end语句与sum函数进行分组求和。
比如:想对不同地区的销售额进行求和
查询语句:

1
2
3
4
select sum(case when city='b' then price else 0 end) as b_sum,  --当city='b'时为price,否则为0,最后求和并且命名为b_sum。
sum(case when city='c' then price else 0 end) as c_sum,
sum(case when city='d' then price else 0 end) as d_sum
from huizongshuju;

用法4

case when…then…else…end语句按次序进行模糊匹配。

比如:手里有个list( ‘ucbrowser’, ‘baidubox’, ‘weixin’, ‘mqqbrowser’, ‘sogousearch’)——各大浏览器按次序排的.

IF函数:判断

1
IF(expr,v1,v2)

其中:表达式 expr 得到不同的结果,当 expr 为真是返回 v1 的值,否则返回 v2.

例子:

1
SUM(IF(result = “wrong”, 1, 0)) AS w_question_cnt

INSERT函数:替换字符串

1
INSERT(s1,x,len,s2)

返回字符串 s1,子字符串起始于 x 位置,并且用 len 个字符长的字符串代替 s2

IFNULL函数:判断是否为空

1
IFNULL(v1,v2)

其中:如果 v1 不为 NULL,则 IFNULL 函数返回 v1; 否则返回 v2 的结果。

concat()

功能:将多个字符串连接成一个字符串。

1
concat(str1, str2,...)

返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。

group_concat()

功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

1
group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )

说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。


返回 MySql 系列