【发布时间】:2020-01-30 09:55:46
【问题描述】:
我正在尝试使用以下表达式为给定项目创建来自在两个字段(纬度、经度)中具有纬度和经度值的现场设备的新记录的 geom 值:
UPDATE public.data_mds_import
SET geom=(
SELECT
st_force3d(st_setsrid(st_point(public.data_mds_import.longitude, public.data_mds_import.latitude),4326))
WHERE PUBLIC.data_mds_import.id_jobcode=220 /* ENTER ID_JOBCODE HERE */
);
我们有很多字段数据进来,我需要一个语句,我可以在语句中为每组导入的新字段数据更改作业代码值。
问题在于,对于表中 jobcode != 220 的其他作业,该函数返回空值,即它删除了 geom 值,我丢失了我的几何数据,所以我之前有几千条带有几何值的记录函数运行,只运行到 jobcode = '220' 的记录。
为什么会发生这种情况,语句应该只选择 jobcode=220 的记录对吗?而它似乎选择了所有记录并返回 jobcode = 220 的几何图形,并且对于所有其他记录返回 null。没有什么比 null 更好的了。
我应该使用案例陈述吗?如果是这样,有人可以帮忙处理这样的声明,我尝试了几种案例声明变体,但无法执行声明。
【问题讨论】:
标签: sql postgresql postgis