1、多行合并一行
SELECT city,listagg(upper(trim(tele_no)),',') within group(order by ID) tele_no_strFROM CITY_TELE_NOWHERE tele_no between 1519870 AND 1519874GROUP BY city;
2、一行拆分为多行
SELECT city, REGEXP_SUBSTR(tele_no_str, '[^,]+', 1, LEVEL, 'i') AS tele_noFROM (SELECT * FROM CITY_TELE_NO WHERE tele_no_str LIKE '%,%' )CONNECT BY prior rowid = rowidand prior dbms_random.value is not nulland LEVEL <=regexp_count(tele_no_str, '[^,]+');
3、查询树状结构表
select distinct transname,level grade,connect_by_root(source)sou --记录每条记录的根节点from transdatamap_design--where ...start with source in('99165','99154') --指定根节点--nocycle:忽略环,上条transname作为本条source递归查询connect by nocycle prior transname=sourceorder by grade;--调整关联可向上或向下查询
4、回收站相关
--删除表不进回收站DROP TABLE 'table_name' PURGE;--查看回收站中表select * from recyclebin;--恢复表flashback table test_drop to before drop;orflashback table "BIN$b+XkkO1RS5K10uKo9BfmuA==$0" to before drop;--清除回收站中表PURGE TABLE 'table_name';orPURGE TABLE "BIN$b+XkkO1RS5K10uKo9BfmuA==$0";--清空回收站purge recyclebin;
5、获取DDL语句
--建表语句select dbms_metadata.get_ddl('TABLE','TELE_NO_NEW','ODS') from dual;--存储过程select dbms_metadata.get_ddl('PROCEDURE','EX_TELE_NO','DW') from dual;
6、时间日期相关
--date精确到秒(yyyy-mm-dd hh24:mi:ss),相减得到的时间差单位为“天”--分钟差(小时差、秒差以此类推):select ROUND(TO_NUMBER(to_date('2021-07-24 18:12:00','yyyy-mm-dd hh24:mi:ss') - sysdate)*24*60) from dual;--timestamp是DATE类型的扩展,可以精确到小数秒,可以是0-9,缺省是6(yyyy-mm-dd hh24:mi:ss:ff3)--两个timestamp相减的话,得到的是,多少天,多少小时,多少秒等select to_timestamp('2021-07-24 18:12:00','yyyy-mm-dd hh24:mi:ss')-systimestamp from dual;--结果:+000000001 02:41:28.032000000 (1天2小时42分钟28.032秒)
7、分组聚合函数
分组函数涉及较多,另写一篇记录,详见《Oracle分组聚合函数》
文章转载自紫龙的信仰,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




