Oracle小记

来源:互联网 发布:电信路由器限制端口 编辑:程序博客网 时间:2024/06/06 09:54

1、表X(ID,SBBS)中,SBBS字段可能有多个值,例如:32;36。如何将这条数据根据分号隔开,转化为2条数据?

解:select distinct regexp_substr(SBBS,'[^;]+',1,level),id  SBBS FROM X CONNECT BY level<=length(SBBS)-length(replace(SBBS,';',''))+1

结果:   SBBS     ID

              32           1

              36           2

  注意:一定要加上distinct关键字,否则会有多余重复数据。

2、随机数:

     产生任意大小随机数:select dbms_random.random from dual;

     产生100以内的随机数:select ABS(MOD(DBMS_RANDOM.RANDOM,100)) from dual;

     产生100到1000之间的随机数:select TRUNC(100+900*dbms_random.value) from dual;

     产生0到1之间的随机数:select dbms_random.value from dual;

     产生10到20之间的随机数:select dbms_random.value(10,20) from dual;

3 取出当前月份的一号:select trunc(sysdate,'mm') from dual;

   取出上一月的一号:select trunc(trunc(sysdate,'mm')-1,'mm') from dual;

   取出上一年的当前月份的一号:select trunc(trunc(sysdate,'mm')-365,'mm') from dual;

   取出本季度第一天:SELECT to_char(TRUNC(SYSDATE, 'Q'), 'YYYY-MM-DD') FROM dual;

   上个季度最后一天(可以用本季度第一天减去1得到):SELECT to_char(TRUNC(SYSDATE, 'Q') - 1, 'YYYY-MM-DD') FROM dual;

   上个季度第一天(本季度第一天 减3个月):SELECT to_char(add_months(TRUNC(SYSDATE, 'Q'), -3), 'YYYY-MM-DD') FROM dual;

   取当前日期是星期几的中文显示:select   to_char(sysdate, 'day')   from   dual; 

   取得当前日期是本月的第几周  :
    select to_char(sysdate,'YYYYMMDD    W    HH24:MI:SS')   from   dual; 
    select to_char(sysdate, 'W') from dual;

    取得当前日期是一个星期中的第几天,注意星期日是第一天
     select sysdate, to_char(sysdate, 'D') from dual;
     --类似:
     select to_char(sysdate, 'yyyy') from dual; --当前年 
     select to_char(sysdate, 'Q' ) from dual; --当前季度
     select to_char(sysdate, 'mm') from dual; --当前月 
     select to_char(sysdate, 'dd') from dual; --当前日

   

待续...

0 0
原创粉丝点击