转换数组类型

Posted

技术标签:

【中文标题】转换数组类型【英文标题】:Conversion array types 【发布时间】:2013-05-28 07:58:17 【问题描述】:

我在表列中,类型为CHARACTER VARYING[](即数组)

我需要将存在的行与其他数组连接起来

这是我的代码:

UPDATE my_table SET
col = array_cat(col, ARRAY['5','6','7'])   

返回错误:function array_cat(character varying[], text[]) does not exist

原因错误是数组类型不匹配对吗?

问题:如何将这个数组ARRAY['5','6','7']转换为CHARACTER VARYING[]类型?

【问题讨论】:

【参考方案1】:

投射到varchar[]:

 > SELECT ARRAY['5','6','7']::varchar[], pg_typeof( ARRAY['5','6','7']::varchar[] );

 SELECT ARRAY['5','6','7']::varchar[], pg_typeof( ARRAY['5','6','7']::varchar[] );
  array  |      pg_typeof      
---------+---------------------
 5,6,7 | character varying[]

您可以使用 PostgreSQL 特定的::varchar[] 或标准的CAST(colname AS varchar[])...尽管由于数据库实现中的数组不一致,因此使用标准语法不会有太多优势。

【讨论】:

以上是关于转换数组类型的主要内容,如果未能解决你的问题,请参考以下文章

C语言 数组类型转换,怎样将一个float类型的数组转换成字符(串)数组?

字符数组以及类型对字符串数组以及类型的转换

将对象数组转换为其原始类型的数组

java怎样将集合类型转换为数组类型

Swift:从接口类型数组转换为对象数组崩溃

转换数组类型