我在postgresql表中有一个列loc_coords
,其中包含纬度和经度数据。该列中的数据如下所示:
(34.0539, -118.463)
为了使用Postgis
函数ST_PointFromText()
,我必须重新格式化此文本以删除逗号和parens,这意味着:
34.0539 -118.463
我一直试图找到一种方法来一次性完成这些替换,但不断出现错误。以下是我在SQL中尝试做的事情:
WITH comma_repl as (
SELECT replace(loc_coords,',', '') FROM t_active_bus),
rparen as (
SELECT replace(loc_coords, '(','') FROM comma_repl),
lparen as (
SELECT replace(loc_coords, ')', '') FROM rparen)
UPDATE t_active_bus
SET st_loc = st_pointfromtext('POINT(||lparen||)',4326);
但我一直收到loc_coords
没有退出的错误。我想在loc_coords
和rparen
的一个子查询中错误是lparen
不存在。
有关如何解决此问题的任何建议甚至更好的方法吗?
答案 0 :(得分:0)
您是否尝试过创建功能来实现这一目标?
create or replace function process_coords() returns text as $$
begin;
return replace(replace(replace($1,'(',''),')',''),',','');
end;
$$ language 'plpgsql';
UPDATE t_active_bus
SET st_loc = st_pointfromtext('POINT(' || process_coords(loc_coords) || ')',4326);