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" = '';   这种情况不会报错

 

posted @ 2023-09-18 14:46  兵哥无敌  阅读(3)  评论(0编辑  收藏  举报