Oracle随笔
- 刷存量数据
merge into 格式如下
merge into table_name alias1
using(table | view | sub_query) alisa2
on (join condition)
when matched then
update table_name set col1 = xx
when not matched then
insert into...........
- 分组排序
row_number()over(partition by col1 order by col2 desc) : 根据col1分组,分组内根据col2排序,返回结果是分组内部的排序编号,组内连续且唯一
rank()over(partition by col1 order by col2 desc) : 根据col1分组,分组内根据col2排序,返回结果是分组内部的排序编号,如果分组内有两个第一,后面就是第三 例如1,1,3
dense_rank()over(partition by col1 order by col2 desc) : 根据col1分组,分组内根据col2排序,返回结果是分组内部的排序编号,如果分组内有两个第一,后面就是第二 例如1,1,2
- oracle表和字段是有大小写的区别,默认是大写,如果我们用双引号扩起来就区分大小写;如果没有,系统会自动转成大写
create table ccc(
"name" varchar2(32)
)
select * from ccc where name = ''; 这种情况会报错,因为name是小写字段;select * from ccc where name = '' 会默认转成select * from ccc where "NAME" = '';
select * from ccc where “NAME”= ''; 这种情况会报错;
select * from ccc where "name" = '' 这种情况不会报错;
--------------------------------------------------------------------------------
create table sss(
name varchar2(32)
)
select * from sss where "name" = ''; 这种情况会报错
select * from sss where name = ''; 这种情况不会报错
select * from sss where "NAME" = ''; 这种情况不会报错