postgresql改变字符变化为字符变化数组

时间:2018-01-24 02:37:23

标签: sql postgresql

下面我在表格中有两列。他们都说他们的角色不一样,但zoning_description后面有一个数组符号。我需要更改分区列以匹配zoning_description列类型。我该如何做到这一点。

这两种列类型有什么区别...... 由于此问题,我在稍后的其他进程中遇到错误

enter image description here

2 个答案:

答案 0 :(得分:0)

看起来zoning_descriptionVARCHAR值的数组,而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[] |           |          |