文章目录- 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。
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', '今日新闻','北京新闻');