前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >总结MySQL和Oracle的语法区别

总结MySQL和Oracle的语法区别

作者头像
程序员云帆哥
发布2022-05-12 10:57:25
1.6K0
发布2022-05-12 10:57:25
举报
文章被收录于专栏:程序员云帆哥

文章目录

1、时间函数

mysql

oracle

时间转换为字符串型时间

date_format(NOW(),’%Y-%m-%d’)

to_char(sysdate, ‘YYYY-MM-DD’)

字符串型时间转换为时间类型

date_format(NOW(),’%Y-%m-%d’)

to_date(‘2020-12-01’, ‘YYYY-MM-DD’)

2、空值返0

mysql

oracle

IFNULL、COALESCE

nvl、nvl2

说明:

  • nvl:基本语法为nvl(E1,E2),意思是E1为null就返回E2,不为null就返回E1。
  • nvl2:nvl2函数的是nvl函数的拓展,基本语法为nvl2(E1,E2,E3),意思是E1为null,就返回E3,不为null就返回E2。
  • IFNULL:基本语法为IFNULL(E1,E2),假如E1不为NULL,则返回值为E1,否则为E2。
  • COALESCE:COALESCE(value,…)是一个可变参函数,可以使用多个参数。作用:接受多个参数,返回第一个不为NULL的参数,如果所有参数都为NULL,此函数返回NULL;当它使用2个参数时,和IFNULL函数作用相同。

3、长度函数

mysql

oracle

char_length(str)

length(str)

4、条件函数

mysql

oracle

IFNULL

nvl

IF(expr1,expr2,expr3)

nvl2

IF(value=val1, val2, val3)、case when

DECODE

说明:

  • IF(expr1,expr2,expr3):如果expr1不为null,则返回expr2,否则返回expr3。
  • IF(value=val1, val2, val3):如果value等于val1,则返回val2,否则返回val3。
  • case when then else end:如果value等于if1,则返回val1,如果value等于if2,则返回value2…如果value等于ifn,则返回valn,否则返回val。
代码语言:javascript
复制
SELECT 
  CASE WHEN STATUS = '1' THEN 'success' 
       WHEN STATUS = '0' THEN 'faild'
ELSE 'error' END  
FROM  SYS_SCHEDULER

5、trunc()函数

MySQL

Oracle

truncate(123.123,2)

TRUNC(123.123,2)

6、字符串整型转换函数

MySQL

Oracle

整型转字符串

CAST(123 AS CHAR(3))

to_char(123)

字符串转整型

cast(‘123’ as SIGNED)

to_number(‘123’)

7、引号

MySQL可识别双引号和单引号,Oracle只能识别单引号。

8、字符串连接符

MySQL

Oracle

concat(studentname, ‘=’, studentno)

studentname||’=’||studentno

9、空数据排序

MySQL

代码语言:javascript
复制
select * from USER A order by IF(ISNULL(A.REMARK),1,0),A.REMARK desc
select * from USER A order by IF(ISNULL(A.REMARK),0,1),A.REMARK desc

Oracle

代码语言:javascript
复制
SELECT * FROM USER A ORDER BY A.REMARK DESC NULLS FIRST
SELECT * FROM USER A ORDER BY A.REMARK DESC NULLS LAST

10、表(左/右)关联

Oracle左连接、右连接可以使用(+)来实现,MySQL只能使用left join ,right join等关键字。 Oracle

代码语言:javascript
复制
select * from ta, tb where ta.id = tb.id(+);  #左关联
select * from ta, tb where ta.id(+) = tb.id;  #右关联

MySQL

代码语言:javascript
复制
select * from ta left join tb on ta.id=tb.id;  #左关联
select * from ta right join tb on ta.id=tb.id; #右关联

11、merge into

   MySQL不支持(merge into),但提供的replace into 和on duplicate key update可实现相似的功能。

代码语言:javascript
复制
insert into article(id,title,content)
select '10' id, '今日新闻' title, '北京新闻' content
from article
on duplicate key 
update title = values(title),
	content=values(content);
	
replace into article(id,title,content)
values('10', '今日新闻','北京新闻');
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1、时间函数
  • 2、空值返0
  • 3、长度函数
  • 4、条件函数
  • 5、trunc()函数
  • 6、字符串整型转换函数
  • 7、引号
  • 8、字符串连接符
  • 9、空数据排序
  • 10、表(左/右)关联
  • 11、merge into
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档