下面我在表格中有两列。他们都说他们的角色不一样,但zoning_description后面有一个数组符号。我需要更改分区列以匹配zoning_description列类型。我该如何做到这一点。
这两种列类型有什么区别...... 由于此问题,我在稍后的其他进程中遇到错误
答案 0 :(得分:0)
看起来zoning_description
是VARCHAR
值的数组,而zoning
只是VARCHAR
。如果您想将zoning
转换为与zoning_description
相同的数据类型,您可以这样做:
SELECT ARRAY[zoning]
这会将其作为数组数据类型进行CAST。
工作查询
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
) src
答案 1 :(得分:0)
只需用铸造改变类型,例如你的桌子:
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[] | | |