PostgreSQL中 AnyElement AnyArray AnynonArray的区别与联系

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介:

http://www.postgresql.org/docs/current/static/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC

先看一个例子:

CREATE OR REPLACE FUNCTION myappend01(anyelement, anyelement) RETURNS anyelement AS
$$
SELECT $1 || $2;
$$ LANGUAGE SQL;

执行(按 AnynonArray来传递输入参数):

pgsql=# select myappend01('abc', 'def');
ERROR:  could not determine polymorphic type because input has type "unknown"
pgsql=# 
复制代码
pgsql=# select myappend01('abc'::text, 'def'::text);
 myappend01 
------------
 abcdef
(1 row)

pgsql=# 
复制代码

执行(按 AnyArray来传递输入参数):

pgsql=# select myappend01(ARRAY['mm','nn'], ARRAY['xx','yy']);
  myappend01   
---------------
 {mm,nn,xx,yy}
(1 row)

可以认为 AnyElement = AnyArray || AnynonArray

再看一个例子:

复制代码
pgsql=# select myappend02('abc', 'def');
ERROR:  could not determine polymorphic type because input has type "unknown"
pgsql=# 
pgsql=# 
pgsql=# select myappend02('abc'::text, 'def'::text);
 myappend02 
------------
 abcdef
(1 row)

pgsql=#
复制代码
pgsql=# select myappend02(ARRAY['aa','bb'], ARRAY['cc','dd']);
ERROR:  function myappend02(text[], text[]) does not exist
LINE 1: select myappend02(ARRAY['aa','bb'], ARRAY['cc','dd']);
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
pgsql=# 








本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/p/3191075.html,如需转载请自行联系原作者


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
2月前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
Oracle 关系型数据库 数据库
PostgreSQL和Oracle两种数据库有啥区别?如何选择?
PostgreSQL和Oracle两种数据库有啥区别?如何选择?
526 0
|
7月前
|
安全 关系型数据库 数据库
postgresql|数据库|角色(用户)管理工作---授权和去权以及usage和select两种权限的区别
postgresql|数据库|角色(用户)管理工作---授权和去权以及usage和select两种权限的区别
312 0
|
存储 SQL XML
面试题:PostgreSQL和MySQL区别
面试题:PostgreSQL和MySQL区别
736 0
面试题:PostgreSQL和MySQL区别
|
关系型数据库 PostgreSQL
【PostgreSql】------- Sqlserver与postgreSQL 区别差异
【PostgreSql】------- Sqlserver与postgreSQL 区别差异
959 0
|
关系型数据库 PostgreSQL
AliCloudDB for PostgreSQL rds_superuser与superuser的区别
rds_superuser是介于普通用户和superuser之间的一种权限。拥有rds_superuser权限的用户,可以有如下特权:创建和删除extension。创建和删除普通用户以及rds_superuser。用法举例:create role new_rds_superuser_name rd.
2727 0
|
SQL 关系型数据库 PostgreSQL
|
SQL 关系型数据库 PostgreSQL
|
关系型数据库 数据库 PostgreSQL
PostgreSQL 从源码找出哪些操作需要超级用户权限 - 阿里云rds_superuser和superuser有什么区别
标签 PostgreSQL , 超级用户 , superuser 背景 在数据库中哪些操作需要超级用户的权限才能执行? 这个问题翻文档可能翻不全面,或者是已经比较难以完成的任务。 但是从源码里面是比较好找出这个答案的。 权限 例如 postgres=# select * from pg_authid; rolname | rolsuper | rolin
3382 0