1. oracle的(+) 改为hive左右连接
oracle (+)学习_cclovezbf的博客-CSDN博客最近工作需要将oracle的存储过程转化为hive的sql脚本。遇到很多不一样的地方,例如oracle连接中有(+)号的用法。借鉴这篇文章,但是这个排版比较烂。。。先建表和插入数据首先说明(+)代表什么?代表这一侧的数据可以为空!a.id=b.id(+) 代表b表和a表关联的时候以a表作为主表。https://blog.csdn.net/cclovezbf/article/details/128305437
2.select中含有子查询
例如select a.id, (select b.id from b where b.name=a.id) from a
hive 是不支持select 里面子查询的。 修改如下
select a.id ,b.id from a left join b on a.id=b.name
3.oracle的decode函数
decode('key',if1,then1 ,if2,then2...thenN)
一般来说可以改为case key when if1 then then1 when if2 then then2 else thenN
但是如果decode比较简单 可以直接改为 if('key'=if1,then1,then2)
4.oracle的时间转化
select TO_CHAR(ADD_MONTHS(TO_DATE('202202','YYYYMM'),-1),'YYYYMM') FROM dual --获取上
hive
select DATE_FORMAT(add_months(to_date(from_unixtime(UNIX_TIMESTAMP('202212','yyyyMM'))) ,-1),'yyyMM');
5.oracle的 to_char 格式化时间格式
select to_char(sysdate ,'YYYY-MM-DD') from dual
hive的
select to_date(current_timestamp);
如果hive要转化为其他格式 可以用date_format(current_date,'yyyy-MM-dd HH:mm:ss')
oracle的trunc函数
https://blog.csdn.net/cclovezbf/article/details/128326389