MySQL基础-04常见函数(单行函数)

这篇博客详细介绍了MySQL中的单行函数,包括字符函数如length、concat、substr等,数学函数如ABS、SIGMA、ROUND等,日期函数如now、curdate、curtime等,以及流程控制函数如IF和CASE。通过实例展示了如何在SQL查询中应用这些函数,帮助理解并提升数据库操作能力。
摘要由CSDN通过智能技术生成

MySQL基础-04常见函数(单行函数)

1 单行函数

1.1 字符函数

  1. length()
select length('john') #4
select length('张三丰hahaha') #15 字符集utf-8 汉字占三个字节
show variables lie '%char%'  #查看字符集
  1. concat
    将姓变大写名变小写,然后拼接
select concat(last_name,'_',first_name) from employees;
select concat(upper(last_name),lower(first_name)) from employees;
  1. substrr 、 substring
#注意索引从1开始
#截取从指定索引处后面所有字符
select substr('李莫愁爱上了陆湛远',7) out_put;  #陆湛远
#截取从指定索引处指定字符长度的字符
select substr('李莫愁爱上了陆湛远',1,3) out_put;  #李莫愁

#姓名中首字符大写其他字符小写然后用_拼接,显示出来
select concat(upper(sunstr(last_name,1,1)),'_',lower(sunstr(last_name,2))) out_put
from employees;
  1. instr 返回字串第一次出现的索引,如果找不到返回0
select instr('杨不殷六侠梅爱上了殷六侠','殷六侠') as out_put;  # 3
  1. trim 去除字符串前后空格
select trim('   张翠山   ')
select trim('a' from 'aaaaaaaa张aaaaa翠山aaaaaaaaa') as out_put;  #张aaaaa翠山
  1. lpad 用指定的字符实现左填充指定长度
select lpad('殷素素',10,'*') as out_put; #*******殷素素
select lpad('殷素素',2,'*') as out_put; #殷素
  1. rpad 用指定的字符实现右填充指定长度
select lpad('殷素素',12,'ac') as out_put; #殷素素ababababa
  1. replace 替换
select replace('张无忌爱上了周芷若','周芷若','赵敏') #张无忌爱上了赵敏

1.2 数学函数

函数用法
ABS(x)返回x的绝对值
SIGN(X)返回X的符号。正数返回1,负数返回-1,0返回0 PI() 返回圆周率的值
CEIL(x),CEILING(x)返回大于或等于某个值的最小整数
FLOOR(x)返回小于或等于某个值的最大整数
LEAST(e1,e2,e3…)返回列表中的最小值
GREATEST(e1,e2,e3…)返回列表中的最大值
MOD(x,y)返回X除以Y后的余数
RAND()返回0~1的随机值
RAND(x)返回0~1的随机值,其中x的值用作种子值,相同的X值会产生相同的随机数
ROUND(x)返回一个对x的值进行四舍五入后,最接近于X的整数
ROUND(x,y)返回一个对x的值进行四舍五入后最接近X的值,并保留到小数点后面Y位
TRUNCATE(x,y)返回数字x截断为y位小数的结果
SQRT(x)返回x的平方根。当X的值为负数时,返回NULL
  1. round 四舍五入
select round(1.65) #2
select round(1.45) #1

select round(1.567,2);  #四舍五入,结果保留两位 1.57
  1. cell 向上取整,返回>=该参数的最小整数
select cell(1.52) #2
select cell(1.002) #2
select cell(1.00) #1
select cell(-1.02) #-1
  1. floor 向下取整 返回<=该参数的最小整数
select floor(9.99)  #9
select floor(-9.99) #-10
  1. truncate 截断
select truncate(1.65,1); #1.6
  1. mod 取余
    mod(a,b) => a-a/b*b;
select mod(10,3) #1
select 10%3;

1.3 日期函数

  1. now 返回当前系统日期+时间
select now(); #2022-04-24 11:12:38
  1. curdata 返回当前系统日期
select curdate(); ; #2022-04-24 
  1. curtime 返回当前时间
select curtime(); #11:12:38
  1. 可以获取指定的部分,年、月、日、时、分、秒
select year(now())select year('1990-1-1') #1991

select month(now());
select monthname(now());
  1. str_to_date: 将日期格式的字符转换成指定格式的日期
select str_to_date('9-13-1999','%m-%d-%Y)  #1999-09-13
  1. date_format:将日期转换成字符
select date_format('2018/6/6','%Y年%m月%n日';  #2018年06月06日

在这里插入图片描述

1.4 其他函数

select version();
select database;
select user;

1.5 流程控制函数

  1. if 函数
select if(10>5,'大','小')
  1. case
    case 要判断的字段或表达式
    when 常量1 then 要显示的值1或语句;
    when 常量2 then 要显示的值2或语句;

    else 要显示的值n或语句;
    end;
#查询员工的工资,要求:
#部门号=30,显示的工资为1.1倍
#部门号=40,显示的工资为1.2倍
#部门号=50,显示的工资为1.3倍
select salary 原始工资,department_id,
case department_id
when 30 then salary*1.1
when 40 then salary*1.2
when 50 then salary*1.3
else salary
end as 新工资
from employees;
  1. case 函数的使用二,类似于多重if
    case
    when 条件1 then 要显示的值或者语句;
    when 条件2 then 要显示的值或者语句;
    when 条件3 then 要显示的值或者语句;

    else 要显示的值或者语句;
    end;
#查询员工的工资的情况
#如果工资>20000,显示A级别
#如果工资>15000,显示B级别
#如果工资>10000,显示C级别
#否则 D级别
Select salary
case sqlary>20000 then 'A'
case sqlary>15000 then 'B'
case sqlary>10000 then 'C'
else 'D'
end as 工资级别
from emp;oyees;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值