Oracle的一些小技巧

◆Oracle有3种连接身份:

1.sysdba:  通称数据库管理员: 具有最高权限。可以对数据库胡搞瞎搞(打开/关闭数据库服务器, 备份/恢复数据库,日志归档,会话限制,管理功能,创建数据库

2.sysoper: 通称数据库操作员。 比上面那个等级低些。只能对数据库动手动脚(打开/关闭数据库服务器, 备份/恢复数据库,日志归档,会话限制

3.normal: 通称普通用户。权限少的可怜,只有查询某些数据表的数据。


◆如何输出一个带有小数点的数字。

select to_char(abs(3213213),
               decode(instr(to_char(abs('3213213')), '.'),
                      0,
                      'FM9,999,999,999,990',
                      'FM9,999,999,999,990.999999999')) as huja
  from dual;

上述的语句会判断如果是整数的时候,输出整数,而非整数的时候会输出小数点。


◆为一个表增加一个字段,并给与他一个新值,同时不破坏原有的值和结构

declare
  v_rowcount integer;
begin
  select count(*) into v_rowcount from dual where exists(
    select 1 from all_tab_columns
    where owner = upper('owner_name')
    and table_name = upper('table_name')  
    and column_name = upper('col_new_val')
  );
  if v_rowcount = 0 then
    execute immediate 'alter table owner_name.table_name add col_new_val char(1) default '' ''    NOT NULL';
    execute immediate 'update owner_name.table_name set col_new_val = '0'';
  end if;
end;
/


◆日期,数字,显示格式的转换

##在开发中经常会遇到要存储日期,通常使用number型来保存数据

主要用到的转换为:将date类型的转换为number类型

select to_number(to_char(sysdate,'yyyymmdd')) as date_value from dual;

将number类型的转换为date类型(format要和转换数据的format一致,如这里是20150609 那么format就是yyyymmdd, 否则会出错)

select to_date(to_char(20150609),'yyyymmdd') as date_value from dual;

显示时间类型的格式转换,如20150609要显示成09-06-2015 (※to_date函数的format要注意和保持转换的数据一致)

select to_char(to_date('20150609','yyyymmdd'), 'dd-mm-yyyy') as date_value from dual;



你可能感兴趣的:(Oracle的一些小技巧)