Oracle 自定义实用函数

一、ctod 字符转为date,

create or replace function ctod(str in varchar2)
return date
as
begin
  return to_date(str,‘yyyy-MM-dd hh24:mi:ss‘);
  exception
    when others then
    return null;
end;  

使用示例:select ctod(‘2019-1-17‘) from dual;

二、splittb  字符串分割,分割之后返回行。

  

CREATE OR REPLACE FUNCTION splitTB(
                   str in clob, --待分割的字符串
                   splitchar in varchar2 --分割标志
            )
            return split_table
            IS
              restStr clob default splitTB.str;--剩余的字符串
              thisStr varchar2(4000);--取得的当前字符串
              indexStr int;--临时存放分隔符在字符串中的位置

              v split_table := split_table(); --返回结果
              v_i int:=0;
              v_spitchar_len int :=length(splitchar);
            begin
                 dbms_output.put_line(restStr);
                 while length(restStr) != 0
                   LOOP
                     <<top>>
                     indexStr := instr(restStr,splitchar); --从子串中取分隔符的第一个位置

                     if indexStr = 0 and length(restStr) != 0  then--在剩余的串中找不到分隔符
                        begin
                          v_i:=v_i+1;
                          v.extend;
                          v(v.count) := split_arr(v_i,trim(Reststr));
                          return v;
                        end;
                     end if;
                     if indexStr = 1 then---第一个字符便为分隔符,此时去掉分隔符
                        begin
                             restStr := substr(restStr,v_spitchar_len);
                             goto   top;
                        end;
                     end if;

                     if length(restStr) = 0 or restStr is null then
                        return v;
                     end if;
                    v_i:=v_i+1;
                     v.extend;
                     thisStr := trim(substr(restStr,1,indexStr - 1)); --取得当前的字符串
                     restStr := substr(restStr,indexStr + v_spitchar_len);---取剩余的字符串
                     v(v.count) := split_arr(v_i,thisStr);
                   END LOOP;
                 return v;
            end;

使用示例:select * from table(splittb(‘a1,b2,cc‘,‘,‘));

返回:(两列,第一列I序号,每二列cstr分割的值

I----------CSTR--------------------------------------------------------------------------------
1    a1

2    b2

3    cc



  

原文地址:https://www.cnblogs.com/KevinMO/p/10287193.html

时间: 2024-10-22 15:24:30

Oracle 自定义实用函数的相关文章

Oracle数据库实用函数

实用函数 DECODE 语法如下: DECODE(value, if1, then1, if2,then2,if3,then3, . . . else )  Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果.当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1:如果value等于if2,Decode函数结果是then2:等等.事实上,可以给出多个if/then 配对.如果value结果不等于给出的任何配对时,Decode 结果就返回els

Oracle自定义聚集函数

今天工作中看见别人写的自定义聚集函数,所以一门心思的想搞懂,就在网上找资料了. 自定义聚集函数 自定义聚集函数接口简介 Oracle提供了很多预定义好的聚集函数,比如Max(), Sum(), AVG(), 但是这些预定义的聚集函数基本上都是适应于标量数据(scalar data), 对于复杂的数据类型,比如说用户自定义的Object type, Clob等, 是不支持的. 但是,幸运的是, 用户可以通过实现Oracle的Extensibility Framework中的ODCIAggregat

Oracle 自定义聚合函数

create or replace type str_concat_type as object ( cat_string varchar2(4000), static function ODCIAggregateInitialize(cs_ctx In Out str_concat_type) return number, member function ODCIAggregateIterate(self In Out str_concat_type,value in varchar2) re

重写Oracle的wm_concat函数,自定义分隔符、排序

oracle中,wm_concat函数是一个聚合函数,和mysql中的group_concat函数类似,不过group_concat函数比较强大,可以定义分隔符和排序,当然所谓强大是相对的,这里假使我们不知道oracle中的over函数,也不知道listagg函数. 我们先来看看wm_concat函数能实现什么功能,通俗点==>列传行,如果不明白,请看下面截图(可以看到分隔符默认为','顺序也是杂乱的)          所以,接下来,我们开始重写wm_concat函数(需要注意和需要说明的地方

Oracle自定义函数1

用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序.调用时如同系统函数一样,如max(value)函数,其中,value被称为参数.函数参数有3种类型. IN 参数类型:表示输入给函数的参数. OUT 参数类型:表示参数在函数中被赋值,可以传给函数调用程序. IN OUT参数类型:表示参数既可以传值也可以被赋值. 1.语法格式: SQL语法方式创建的语法格式为: CREATE OR REPLACE FUNCTION function_name         /*函数名称*/(Para

Oracle自定义函数

核心提示:函数用于返回特定数据.执行时得找一个变量接收函数的返回值; 语法如下: create or replace function function_name ( argu1 [mode1] datatype1, argu2 [mode2] datatype2, ........ ) return datatype is begin end; 执行 var v1 varchar2(100) exec :v1:=function_na 函数用于返回特定数据.执行时得找一个变量接收函数的返回值;

Oracle自定义数据类型 1

原文 oracle 自定义类型 type / create type 一 Oracle中的类型 类型有很多种,主要可以分为以下几类: 1.字符串类型.如:char.nchar.varchar2.nvarchar2.2.数值类型.如:int.number(p,s).integer.smallint.3.日期类型.如:date.interval.timestamp.4.PL/SQL类型.如:pls_integer.binary_integer.binary_double(10g).binary_fl

oracle中nvl()函数

oracle的nvl函数的使用方法 通过查询获得某个字段的合计值,假设这个值位null将给出一个预设的默认值 select nvl(sum(t.dwxhl),1) from tb_jhde t where zydm=-1 这里关心的nvl的使用方法,nvl(arg,value)代表假设前面的arg的值为null那么返回的值为后面的value 如: NVL(a,b)就是推断a是否是NULL,假设不是返回a的值.假设是返回b的值 通过查询获得某个字段的合计值,假设这个值位null将给出一个预设的默认

《PHP实用函数手册》系列技术文章整理收藏

<PHP实用函数手册>系列技术文章整理收藏 1PHP函数补完:error_reporting()http://www.lai18.com/content/425520.html 2PHP函数补完:get_magic_quotes_gpc()http://www.lai18.com/content/425521.html 3PHP函数补完:isset()http://www.lai18.com/content/425514.html 4PHP函数补完:array_multisort()http: