【小计】PostgreSQL实现Oracle的decode函数功能
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,create or replace function decode(variadic p_decode_list text[])returns text as$$declare -- 获取数组长度(即
千家信息网最后更新 2025年11月07日【小计】PostgreSQL实现Oracle的decode函数功能
create or replace function decode(variadic p_decode_list text[])returns text as$$declare -- 获取数组长度(即入参个数) v_len integer := array_length(p_decode_list, 1); -- 声明存放返回值的变量 v_ret text;begin /* * 功能说明:模拟Oracle中的DECODE功能(字符串处理, 其它格式可以自行转换返回值) * 参数说明:格式同Oracle相同,至少三个参数 * 实现原理: 1、VARIADIC 允许变参; 2、Oracle中的DECODE是拿第一个数依次和之后的偶数位值进行比较,相同则取偶数位+1的数值,否则取最后一位值(最后一位为偶数为,否则为null) */ -- 同Oracle相同当参数不足三个抛出异常 if v_len >= 3 then -- Oracle中的DECODE是拿第一个数依次和之后的偶数位值进行比较,相同则取偶数位+1的数值 for i in 2..(v_len - 1) loop v_ret := null; if mod(i, 2) = 0 then if p_decode_list[1] = p_decode_list[i] then v_ret := p_decode_list[i+1]; elsif p_decode_list[1] <> p_decode_list[i] then if v_len = i + 2 and v_len > 3 then v_ret := p_decode_list[v_len]; end if; end if; end if; exit when v_ret is not null; end loop; else raise exception 'UPG-00938: not enough args for function.'; end if; return v_ret;end;$$ language plpgsql;-- 测试1select decode('_a','_aa', 'x') a3, decode('_a','_aa', 'x', 's') a4, decode('_a', '_aa', 'x', '_b', 's') a5, decode('_b', '_aa', 'x', '_b', 's') a5, decode('_a', '_aa', 'x', '_b', 's', 'o', 'x', 'tt') a6;-- 测试2with xx as( select 'M' sex union all select 'F' sex union all select 'X' sex union all select 'Z' sex union all select '' sex)select sex, decode(sex, 'M', '男', 'F', '女', decode(sex, 'X', '变性', '其它')) from xx;
相同
数位
个数
参数
功能
三个
数值
格式
测试
偶数
原理
变量
字符
字符串
数组
长度
变性
处理
函数
小计
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
太原有哪些软件开发培训学校
校园网络安全的特点
职高网络技术考试题
sql两个数据库共用一个表
职业规划计算机网络安全
联网技术人员网络安全知识答案
江苏徐州多线服务器
关系数据库的特点ppt
mysql取数据库时间
qq空间留言时服务器繁忙
网络安全主题安全教育记录
仓库软件开发公司
数据库repeat
工信部 网络安全规范
嵌入式软件开发初学者
通讯网络安全检测中心
智能信息处理与网络技术
vba更新sql数据库数据
国家实行网络安全保护机制
软件开发技术评级
阿里服务器软件打不开网页
从服务器哪个地方查找定时任务
阿里云服务器如何连接上去
定时下载通达信数据库
原神各服务器之间可以一起玩吗
scum服务器怎么知道谁在线
判断数据库连接情况
网络安全维护的主主要内容
web动态查询数据库连接
山西手机软件开发优选企业