Oracle learning note

oracle SQL
select 'para1' || 'para2' as "para"                                                      must ""
select count(*),c.id,c.name                                                              count(*) not use with "group by" count total rows number,otherwise "count(*)" always equal 1
  from table t
 where c.name in ('test1','test2') group by c.name,c.id having count()                   show data group by "count(*)","id","name",selected fields must equal to group by fields except count(*)

(select a.p1 as ap,b.p2 as bp from tablea a join tableb b on a.id = b.id) tablec         combine a&b to c

select (sysdate - c.date) *24 *60 as d,round(123.456, 0) r                               return 123,返回小数点后面0位
 from test 
 where nvl(arg,00<> 23;                                                                代表如果前面的arg的值为null那么返回的值为后面的00,oracle不等于标准写法<>

select distinc * from table t where 1<>1                                                  只取table结构,不取值
select * from table t where 1=1                                                           用于动态创建sql语句以至于不会报错
 

trunc(123.45),trunc(sysdate,'mm')                                                         函数截取时不进行四舍五入2017/1/1 18:00:00 会显示为2017/1/1
round(123.456, 2)                                                                         函数截取时进行四舍五入
to_char(sysdate,'mon')
substr(para,-1,2)                                                                         截取para从最后1个字母开始数的2个字母
to_date('2017-08-09','yyyy-MM-dd')
sign(p1-p2)                                                                               函数根据某个值是0、正数还是负数,分别返回0、1-1
select a.* from A a where exists (select b.* from B b)                                    适合B表比A表数据大的情况,因为exists()会执行A.length次,它并不缓存exists()结果集

if v_name='vickey' then 
    dbms_output.put_line('success!');
else
  dbms_output.put_line('failed');
end if;
decode(filed,ifval1,thensetval1,ifval2,thensetval2,...,else)
原文地址:https://www.cnblogs.com/vickey-wu/p/7381388.html