总结MySQL和Oracle的语法区别

2022-05-12 10:57:25 浏览数 (1)

文章目录
  • 1、时间函数
  • 2、空值返0
  • 3、长度函数
  • 4、条件函数
  • 5、trunc()函数
  • 6、字符串整型转换函数
  • 7、引号
  • 8、字符串连接符
  • 9、空数据排序
  • 10、表(左/右)关联
  • 11、merge into

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', '今日新闻','北京新闻');

0 人点赞