mysql 取代 oracle_oracle函数mysql替代方案

=====1.日期相关===

//获取当前日期在本周的周一

select subdate(now(),date_format(now(),'%w')-1);

//获取当前日期在本周的周日

select subdate(now(),date_format(now(),'%w')-7);

//获取月的第一天

select concat(date_format(now(), '%y-%m'),'-01');

//字符串转日期

select str_to_date('2008-4-2 15:3:28','%Y-%m-%d %H:%i:%s');

//日期转字符串

select date_format(now(),'%y-%m-%d');

=====2.分析函数====

1.lag over取当前列的上一列数据信息,类似于lag over (类似行转列的形式实现)

select max(if(rank=1,username,0)) ,max(if(rank=2,username,0)) from (

select id ,username,@rank:=@rank+1 as rank

from users,(select @rank:=0) q

order by username

) rs limit 1

2.sum over

3.rank over

select id ,username,@rank:=@rank+1 as rank

from users,(select @rank:=0) q

order by username

=====3.特殊函数====

1.nvl

IFNULL(expr1,expr2) ,如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。

2.rownum

3.decode

if(expr,value1,value2) , 如果表达式expr成立则返回value1,反之返回value2

4.merge

INSERT INTO ... ON DUPLICATE KEY UPDATE:

INSERT INTO users(id,username) select * from (select 1 as id,'zs' as username) rs ON DUPLICATE KEY UPDATE username=rs.username

REPLACE INTO:

REPLACE INTO users(ID,USERNAME) select * from (select 1 as id,'zs' as username) rs

注:replace into 是采用的先删除后插入的方式,没有被replace的值会填充为默认值.二者均需要表里面有唯一键或主键

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值