SQL常用函数

一、字符串相关函数

  • CONCAT(字符串拼接)
  • SUBSTR(截取字符串)
  • LENGTH(返回字符串长度)
  • INSTR(返回某个字符在字符串中第一次出现的下标,注意:mysql中的下标从1开始)
  • LPAD(以指定的字符在字符串左边填充至指定长度)
  • RPAD(以指定的字符在字符串右边填充至指定长度)
  • TRIM(删除字符串起始位置的字符)
  • REPLACE(根据指定的字符,替换字符串中的字符)

使用示例

#concat需要三个或二个参数,将第一个参数和第三个参数使用第二个参数拼接
select  concat('勒布朗','-','詹姆斯');  # 结果:勒布朗-詹姆斯

#SUBSTR使用两个参数,将截取指定字符串下标以后的值
select SUBSTR('HelloWorld',6); #结果:World

#SUBSTR使用三个参数,将从第二个参数下标开始截取,截取第三个参数的长度
select SUBSTR('HelloWorld',1,5); #结果:Hello

# 返回字符长度,mysql中一个字符等于三个字节
select length('周芷若');#结果:9

#返回某个字符在字符串中第一次出现的下标,注意:mysql中的下标从1开始
select instr('HelloWorld','W'); #结果:6

# LPAD(以指定的字符在字符串左边填充至指定长度)
select  LPAD('Hello',10,'*'); #结果:*****Hello

# LPAD(以指定的字符在字符串右边填充至指定长度)
select  RPAD('Hello',10,'*'); #结果:Hello*****

#TRIM(删除字符串起始位置的字符)
select trim('H' from 'HelloWorld') ; #结果:elloWorld

#REPLACE(根据指定的字符,替换字符串中的字符)
select replace('abcd','b','m'); #结果:amcd

二、数学相关函数

  • round(四舍五入)
  • ceil(向上取整)
  • floor(向下取整)
  • truncate(截断,通常用于小数点后保留的位数)
  • mod(取余)

使用示例

# 四舍五入
select round(1.765); # 如果只写一个参数,则只保留整数 结果:2
select round(1.765,2); # 如果写两个参数,则只保留两位小数 结果:1.77

# 向上取整
select ceil(2.8); # 3

# 向下取整
select floor(2.8); # 2

#截取小数点后两位
select truncate(2.8946,2) ;#2.89

#取余
select mod(10,3) #1

三、日期相关函数

  • now (返回当前日期+时间)
  • curdate(返回当前日期)
  • curtime (返回当前时间)
  • year(获取一个日期中的年份)
  • month(获取一个日期中的月份)
  • str_to_date(将日期字符串转为日期型)
  • date_format(将日期转为指定格式的字符串)
  • datediff(查询两个日期之间相差天数)

日期格式化相关的占位符
在这里插入图片描述
使用示例

select now();#2020-11-18 09:48:01

select curdate(); #2020-11-18

select curtime(); #09:48:01

select year(curdate()); #2020

select str_to_date('12-27-1999','%m-%d-%Y'); #1999-12-27

#将日期格式化为字符串
select date_format(curdate(),'%d/%m/%Y'); #18/11/2020

# 查询两个日期之间相差天数
select datediff(curdate(),'1999-12-27')

四、流程控制函数

  • if (类似于三元运算符)
  • else (类似switch case…)

使用示例

select if(10>5,'大于','小于'); # 大于

/**
  case函数使用1 : 这种通常用于等值判断

    case 变量
    when 常量 then 表达式或值
    when 常量 then 表达式或值
    when 常量 then 表达式或值
    when 常量 then 表达式或值
    else 表达式或值
    end as xxx

 */
select department_id,salary 原始工资,
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;


/**
  case函数使用2 :这种通常用于非等值判断

  case
  when 条件1 then 显示的值或语句
  when 条件2 then 显示的值或语句
  when 条件3 then 显示的值或语句
  else 显示的值或语句
  end

 */

select last_name,salary 原始工资,
case
when salary > 20000 then 'A'
when salary > 15000 then 'B'
when salary > 10000 then 'C'
else 'D'
end as '工资等级'
from employees;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值