下面我在表中有两列。他们都说他们的字符是可变的,但是zoning_description后面有一个数组符号。我需要更改分区列以匹配zoning_description列类型。我怎样才能做到这一点。
另外,这两种列类型之间有什么区别.由于这个问题,我后来在另一个进程中遇到了一个错误。

发布于 2018-01-24 08:48:37
只要用铸造改变字体(如你的桌子):
t=# create table z as select '{R}'::varchar zoning, '{"Blah-ah ah"}'::varchar[] zoning_description;
SELECT 1
t=# select * from z;
zoning | zoning_description
--------+--------------------
{R} | {"Blah-ah ah"}
(1 row)变更类型:
t=# alter table z alter column zoning type varchar[] using zoning::varchar[];
ALTER TABLE
t=# select * from z;
zoning | zoning_description
--------+--------------------
{R} | {"Blah-ah ah"}
(1 row)检查栏:
t=# \d z
Table "postgres.z"
Column | Type | Collation | Nullable | Default
--------------------+---------------------+-----------+----------+---------
zoning | character varying[] | | |
zoning_description | character varying[] | | |发布于 2018-01-24 02:58:49
看起来zoning_description是一个VARCHAR值数组,而zoning只是一个VARCHAR。如果要将zoning转换为与zoning_description相同的数据类型,则只需执行以下操作:
SELECT ARRAY[zoning]这将将其转换为数组数据类型。
工作查询
SELECT
MyVarchar,
PG_TYPEOF(MyVarchar), -- character varying
MyVarcharArray,
PG_TYPEOF(MyVarcharArray), -- character varying[]
ARRAY[MyVarchar],
PG_TYPEOF(ARRAY[MyVarchar]) -- character varying[]
FROM (
SELECT
CAST('rammstein' AS VARCHAR) AS MyVarchar,
ARRAY[CAST('du hast' AS VARCHAR)] AS MyVarcharArray
) srchttps://stackoverflow.com/questions/48413987
复制相似问题