1、ROW_NUMBER():返回结果集分区内行的序列号,每个分区的第一行从 1 开始
语法:
ROW_NUMBER () OVER ( [ ] )。
备注:
ORDER BY子句可确定在特定分区中为行分配唯一ROW_NUMBER的顺序。
和oracle中的rownum类似。
Select * from Person order by p_id.这样出来的是在外面排序的。而row_number()是在select中排序
参数:
:将FROM子句生成的结果集划入应用了ROW_NUMBER函数的分区。:确定将ROW_NUMBER 值分配给分区中的行的顺序。
返回类型:
bigint
列子:
select ROW_NUMBER () OVER (ORDER BY ba.serialno),ba.* FROM business_apply ba
2、插入单引号:
用‘’,单引号前加单引号就是插入单引号
3、oracle测试SQL运行时间
在sqlplus中运行 : set timing on;
4、反斜杠作用
/ : 在Oracle中,用来终止SQL语句。更准确的说,是表示了“运行现在位于缓冲区的SQL代码”。正斜杠也用作分隔项。
5、修改timezone
selectsystimestamp at time zone'CST6CDT'fromdual
6、sql%rowcount
sql%rowcount用于记录修改的条数,就如你在sqlplus下执行delete from之后提示已删除xx行一样, 这个参数必须要在一个修改语句和commit之间放置,否则你就得不到正确的修改行数。
例如:
SQL> declare n number;
2 begin
3 insert into test_a select level lv from dual connect by level<500;
4 n:=sql%rowcount;
5 commit;
6 dbms_output.put_line(n);
7 end;
8 /
499
PL/SQL procedure successfully completed.
SQL> declare n number;
2 begin
3 insert into test_a select level lv from dual connect by level<500;
4 commit;
5 n:=sql%rowcount;
6 dbms_output.put_line(n);
7 end;
8 /
0
PL/SQL procedure successfully completed.
×××××××××××××
如果我连续执行了3个select语句
然后调用sql%rowcount,得到的结果是最后一个select的条数。 要统计所有的,可以使用三个变量接收sql%rowcount,然后相加即可,不过貌似直接select的写法无法使用sql%rowcount。
问题描述: 在平时的业务处理中,经常遇到要对业务数据进行排序,并且要对null值也做相应的排序。在Oracle中,进行Order by排序时缺省认为null是最大值,所以如果是ASC升序则被排在最后,而DESC降序则排在最前。有的时候我们需要在降序排列时,同时要将null的数据排到最后,应该如何处理。 问题处理: 方法1:使用nvl函数 语法:Nvl(expr1, expr2) 若EXPR1是NULL,則返回EXPR2,否則返回EXPR1. SELECT NAME,NVL(TO_CHAR(COMM),'NOT APPLICATION') FROM TABLE1; 认识了NVL的语法,就可以在排序中使用,如: ORDER BY NVL(FIELD, '0') 方法2:使用其它函数,如decode,case。 方法3:nulls first或nulls last 语法: Nulls first:表示null值的记录将排在最前 Nulls last:表示null值的记录将排在最后 --null值始终放在最前面 select * from ac01 order by aac001 asc nulls first --null值始终放在最后面 select * from ac01 order by aac001 desc nulls last 经过上述方法的比较,第三种方法比较方便。
8.在oracle中当字段为null时候,where条件不等于什么 是查不出来的