我有一个Postgres表locations
,其中坐标保存在类型为geocoord
的列中:
geocoord_t
,输出为"(12.345678,-0.123456)"
它是否特别有用,我想将此列更改为point
类型
可能有ALTER TABLE
,但我不知道如何将字符串转换为点类型。
我该怎么做? 感谢
答案 0 :(得分:2)
PostgreSQL没有geocoord_t
数据类型,所以这有点猜测,但一般程序是这样的:
ALTER TABLE locations ALTER COLUMN geocoord SET DATA TYPE point;
如果没有从geocoord_t
到point
的自动转换,则必须附加USING
子句。看到geocoord_t
以point
数据类型可以提取的文本格式输出其值,它可以像以下一样简单:
... SET DATA TYPE point USING geocoord::text
否则使用更复杂的表达方式,如:
... SET DATA TYPE point USING point(geocoord.longitude, geocoord.latitude)
或geocoord_t
类型支持的任何其他选项。第二个选项可能更快,因为它避免了从二进制文件到文本到二进制的转换。