概述
对与熟练维护oracle数据库的DBA来说,在接触PostgreSQL数据库时,会觉得缺少在oracle非常常用的函数,特别是在做存储过程迁移时,就会经常出现这样的情况,比如decode函数,nvl函数等等,在这里会将这些缺失的函数做一下整理,方便以后使用。
nvl()函数
nvl(value1, value2) 当value1 为null时返回value2,否则返回value1.
coalease(value1,value2,value3....)函数返回参数中第一个非null的值,所以可以替换nvl()函数; 也可以使用case when end实现nvl()的目的
复制
wm_concat()函数
PostgreSQL 中也有行转列的函数,但是针对不同的数据类型,需要使用不同的函数,
字符串: SELECT string_agg(a, ',' ORDER BY a) FROM table; 数组: SELECT array_agg(a ORDER BY b DESC) FROM table; json/jsonb: select json_agg(expression) from table; select jsonb_agg(expression) from table; xml: select xmlagg(expression) from table;
复制
sys_guid()函数
获取随机数
CREATE or replace FUNCTION pg_catalog.sys_guid() RETURNS varchar AS $$ BEGIN RETURN md5(random()::text || clock_timestamp()::text); END; $$ LANGUAGE plpgsql;
复制
unix_timestamp()函数
将日期时间转换成时间戳
create or replace function pg_catalog.unix_timestamp(text) returns int as $$ select (date_part('epoch',$1::timestamp))::int; $$ LANGUAGE SQL IMMUTABLE;
复制
from_unixtime()函数
将时间戳转换成日期时间
create or replace function pg_catalog.from_unixtime(int) returns timestamp as $$ select to_timestamp($1)::timestamp - '8h'::interval; $$ LANGUAGE SQL IMMUTABLE;
复制
decode()函数
decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)
当条件=值1时,返回“返回值1”,当条件=值2时,返回“返回值3”。。。。当没有符合的值时,返回缺省值
create or replace function pg_catalog.decode(variadic p_decode_list text[]) returns text as $$ declare v_len integer := array_length(p_decode_list, 1); v_ret text; begin if v_len >= 3 then 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; 函数来源:https://www.cnblogs.com/mgt001/p/7810503.html
复制
最后修改时间:2021-11-13 00:11:54
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
您好,您的文章已入选合格奖,10墨值奖励已经到账请查收!
❤️我们还会实时派发您的流量收益。
3年前

评论
1. wm_concat在12c中就不能使用了,所以不是问题
2. unix_timestamp()不是oracle自带函数
3. from_unixtime()不是Oracle自带函数
3年前

3
相关阅读
外国CTO也感兴趣的开源数据库项目——openHalo
小满未满、
1770次阅读
2025-04-21 16:58:09
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
381次阅读
2025-04-15 14:48:05
转发有奖 | PostgreSQL 16 PGCM高级认证课程直播班招生中!
墨天轮小教习
193次阅读
2025-04-14 15:58:34
中国PostgreSQL培训认证体系新增PGAI应用工程师方向
开源软件联盟PostgreSQL分会
186次阅读
2025-05-06 10:21:13
华象新闻 | PostgreSQL 18 Beta 1、17.5、16.9、15.13、14.18、13.21 发布
严少安
150次阅读
2025-05-09 11:34:10
PG生态赢得资本市场青睐:Databricks收购Neon,Supabase融资两亿美元,微软财报点名PG
老冯云数
147次阅读
2025-05-07 10:06:22
SQL 优化之 OR 子句改写
xiongcc
141次阅读
2025-04-21 00:08:06
告别老旧mysql_fdw,升级正当时
NickYoung
125次阅读
2025-04-29 11:15:18
PostgreSQL中文社区亮相于第八届数字中国峰会
PostgreSQL中文社区
110次阅读
2025-05-07 10:06:20
PostgreSQL的dblink扩展模块使用方法
szrsu
106次阅读
2025-04-24 17:39:30