千家信息网

【小计】PostgreSQL实现Oracle的decode函数功能

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,create or replace function decode(variadic p_decode_list text[])returns text as$$declare -- 获取数组长度(即
千家信息网最后更新 2026年11月01日【小计】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安全错误 数据库的锁怎样保障安全 高科技互联网 互联网的科技 互联网科技小贷 西安互联网科技公司 广西互联网科技公司 火传媒上海互联网科技 四个字互联网科技公司取名 汉立互联网科技有限公司联系电话 天速互联网络科技有限公司 济南华为互联网科技产业总部基地 宁波青枫互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 江阴互联网智能科技产品进口 济南有互联网科技公司吗 工业互联网山东科技大学 江苏苏星互联网科技有限公司 图游互联网科技 美国五大互联网科技公司市值多少 科技和互联网行业的特点 广东猫王互联网科技有限公司电话 互联网属科技 美国互联网科技巨头监管 互联网 科技公司 平安科技 互联网 华脉科技工业互联网产品 佳云科技和互联网广告 深圳市罗太互联网科技有限公司 本届互联网大会上的黑科技 版纳互联网科技选哪家 互联网科技创新创业项目
0