首页 > 编程知识 正文

oracle full join,oracle to_date函数

时间:2023-05-05 07:57:45 阅读:106341 作者:1039

createorreplacefunctiondecode (variadicp _ decode _ listtext [ ] ) )

返回文本

as

$$

declare

-获取数组的长度或参数数量

v _ len integer :=array _ length (p _ decode _ list,1 );

-声明包含返回值的变量

v_rettext;

比根

/*

*功能说明3360模拟Oracle的解码功能(字符串处理,其他形式可以自行转换返回值) )

*参数说明:格式与Oracle相同,至少有三个参数

*实现原理:一、VARIADIC允许变量; 二、Oracle中的DECODE将第一个数依次与以后的偶数位的值进行比较,如果相同,则取偶数位1的数值。 否则,取最后一位的值。 (最后一位是偶数,否则为空。 )

*/

如果与Oracle相同的参数小于3,则抛出异常

ifv_len=3then

--Oracle的DECODE从最初数开始按顺序与后面的偶数位的值进行比较,如果相同,则取偶数位1的值

foriin2.(v_len-1 ) loop

v_ret:=null;

ifmod(I,2 )=0then

ifp _ decode _ list [1]=p _ decode _ list [ I ] then

v_ret:=p_decode_list[i 1];

elsifp _ decode _ list [1] p _ decode _ list [ I ] then

ifv_len=i 2andv_len3then

v _ ret :=p _ decode _ list [ v _ len ];

endif;

endif;

endif;

exitwhenv_retisnotnull;

结束环路;

else

raise exception ' upg-00938: notenoughargsforfunction.';

endif;

returnv_ret;

结束;

$$

语言plpgsql;

-测试1

选择代码(' _ a '、' _aa '、' x ' ) a3,

ecode () _a、(_aa )、() x )、(s ) ) a4,

ecode () _a )、((_aa )、() x )、) _b )、() s ) ) a5

ecode(b )、aa )、x )、b )、s ) a5,

ecode () a )、aa )、x )、b )、s )、o )、x )、tt ) a6;

-测试2

withxxas

选择' m ' sex

全部合并

选择' f ' sex

全部合并

选择x ' sex

全部合并

选择' z ' sex

全部合并

选择“”sex

selectsex,decode(sex,' m ','男人',' f ','女人',decode ) sex,' x ','变性','其他') fromxx;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。