oracle 常用函数积累

这些天的工作很多都是围绕着oracle函数来展开的,这里来总结一下这些天在工作中使用过的函数。其实也算不上总结,就是把这些日子对于oracle的使用做一个简单的知识罗列。

  • 以管道化表函数方式返回数据

    --创建指定数据类型的对象

    create type row_typedepluju as object (rootid NUMBER(19),projectid NUMBER(19));

    --创建指定数据类型的对象table

    create type table_typedepluju as table of row_typedepluju;

    create or replace function getlujudepinfobyaccount(useraccount in VARCHAR2)

    return table_typedepluju pipelined as v row_typedepluju;

    begin

    --遍历存放数据

    for myrowdep in (

    -- 查出路局/客专所有的项目id 及根部门id

    select t.id as rootid,pinfo.id as projectid from base_security_department t

    left join pbs_projectinfo pinfo on pinfo.constructiondep_id = t.id

    where t.useflag = 1 and t.grade in (60,130)

    start with t.id=(

    select a.departmentid from base_security_userinfo a where a.account=useraccount)

    connect by prior t.parentid=t.id

    ) loop

    v :=row_typedepluju(myrowdep.rootid,myrowdep.projectid);

    pipe row (v);

    end loop;

    return ;

    end;

  • minus函数返回表的差集

    --取得逗号分隔后的数据中,在关联表中不存在的部分

    insert into base_security_deptproject b (departmentid,projectid) select v.DEPARTMENTID,v.PROJECTID from (select * from

    --选取切割后不为空的数据

    (select c.DEPARTMENTID,c.PROJECTID from (

    --根据逗号切割数据,一行转多行

    --temp0为临时表,20为可接受的逗号数量

    with temp0 as (select LEVEL lv from dual CONNECT BY LEVEL <= 20)

    --切割

    select DEPARTMENTID,substr(

    t.vals,instr(t.vals, ‘,‘, 1, tv.lv) + 1,

    instr(t.vals, ‘,‘, 1, tv.lv + 1) -(

    instr(t.vals, ‘,‘, 1, tv.lv) + 1)

    ) AS projectid from

    --选取待分解的数据,即在用的,指挥部。并取得“,”号数量

    (select id as DEPARTMENTID, PROJECTIDS AS vals,

    length(PROJECTIDS ) - (nvl(length(REPLACE(PROJECTIDS, ‘,‘)), 0)+1) AS cnt

    from BASE_SECURITY_DEPARTMENT g where g.GRADE=‘145‘ and g.USEFLAG=‘1‘ and g.PROJECTIDS is not NULL) t

    left join temp0 tv

    on tv.lv <= t.cnt) c where c.PROJECTID is not NULL)

    --取差集

    MINUS

    -- 关联表中的数据

    (select t.DEPARTMENTID as DEPARTMENTID,"TO_CHAR"(t.PROJECTID) from BASE_SECURITY_DEPTPROJECT t)) v

  • start with connect 方式展现整棵树

select * from base_security_department t connect by prior t.parentid=t.id start with t.id=2400;

  • substr

substr(字符串,截取开始位置,截取长度) //返回截取的字

`select decode(max(substr(t.bscode,length(t.bscode)-1,length(t.bscode))),null,0,max(substr(t.bscode,length(t.bscode)-1,length(t.bscode)))+1) as codenum from base_security_department t where t.useflag=1 and t.bscode like ‘XKHJ01SG07SY__‘;`
  • nextval

nextval的值是每调用一次就增加一次

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 19:44:20

oracle 常用函数积累的相关文章

Oracle常用函数

前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使用: 往emp表中插入一条记录: SQL> insert into emp values(1234,'LIZELU','BOSS',1234,'1980-12-06',10000.0,0,30); insert into emp values(1234,'LIZELU','BOSS',1234,'1

oracle常用函数(1)

1.返回与指定的字符对应的十进制数 select ascii('A') A,ascii('z') a,ascii('12') 一打,ascii(' ') kg from dual; 2.返回与指定十进制对应的字符 select chr(65) A,chr(122) z from dual; 3.连接两个字符串 select concat('熊大','熊二') constr from dual;--熊大熊二 4.将第一个字符变大写并返回字符串 select initcap('boat') uppe

【Oracle】详解Oracle常用函数

Oracle SQL 提供了用于执行特定操作的专用函数.这些函数大大增强了 SQL 语言的功能.函数可以接受零个或者多个输入参数,并返回一个输出结果. Oracle 数据库中主要使用两种类型的函数: 1.  单行函数:对每一个函数应用在表的记录中时,只能输入一行结果,返回一个结果, 比如:MOD(x,y)返回 x 除以 y 的余数(x 和 y 可以是两个整数,也可以是表中的整 数列).常用的单行函数有: Ø  字符函数:对字符串操作. Ø  数字函数:对数字进行计算,返回一个数字. Ø  转换函

oracle常用函数(2)

1.TRIM([ { { LEADING | TRAILING | BOTH }[ trim_character ]| trim_character} FROM ]trim_source) 函数 参数:leading   如果指定leading参数,oracle数据库将去除任何等于trim_character的开头字符. 参数:trailing  如果指定traling参数,oracle将去除任何等于trim_character的结尾字符. 参数:both  如果指定了both参数或者三个参数都

Oracle常用函数及其用法

01.入门Oracle 本章目标: 掌握oracle安装.启动和关闭 基本管理以及常用工具 简单备份和恢复 熟练使用sql,掌握oracle常用对象 掌握数据库设计和优化基本方法 http://jingyan.baidu.com/article/5d6edee228308899eadeec3f.html oracle数据库:一系列物理文件的集合 一个实例是对应一个数据库,但是在12c中(c代表云)RAC集群,可以多个实例对应一个数据库 03.SQL编程 1.oracle中between and

十、oracle 常用函数

一.字符函数字符函数是oracle中最常用的函数,我们来看看有哪些字符函数:lower(char):将字符串转化为小写的格式.upper(char):将字符串转化为大写的格式.length(char):返回字符串的长度.substr(char, m, n):截取字符串的子串,n代表取n个字符的意思,不是代表取到第n个replace(char1, search_string, replace_string)instr(C1,C2,I,J) -->判断某字符或字符串是否存在,存在返回出现的位置的索引

oracle常用函数及示例

学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函数及示例,一是为了和大家分享,二是可以在以后工作中忘记了随时查阅.废话不多说,下面直接上函数. 一.单行函数 只处理单个行,并且为每行返回一个结果. 1.字符函数 (1)concat(str1,str2)字符串拼接函数 select concat('Hello ','World') from dua

oracle 常用函数汇总

一.字符函数字符函数是oracle中最常用的函数,我们来看看有哪些字符函数:lower(char):将字符串转化为小写的格式.upper(char):将字符串转化为大写的格式.length(char):返回字符串的长度.substr(char, m, n):截取字符串的子串,n代表取n个字符的意思,不是代表取到第n个replace(char1, search_string, replace_string)instr(C1,C2,I,J) -->判断某字符或字符串是否存在,存在返回出现的位置的索引

mysql与oracle常用函数及数据类型对比

最近在转一个原来使用oracle,打算改为mysql的系统,有些常用的oracle函数的mysql实现顺便整理了下,主要是系统中涉及到的(其实原来是专门整理过一个详细doc的,只是每次找word麻烦). 特性 oracle mysql 字符串转日期 to_date str_to_date 日期类型 date 公元前4712年1月1日至公元9999年12月31日 datetime:取值范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59 timestamp:取值