区域内对象 id 的最后 3 个字符的子字符串

Substring last 3 characters of an id of an object within an area

我打算从 id 中获取最后三个字符。在我的代码中,您可以看到我正在使用 ST_WITHIN() 来获取另一个对象中的一个对象。然后我抓取该区域内所有对象的“node_id”。下面是代码:

SELECT SUBSTRING ((
    SELECT "node_id" from sewers.structures
            WHERE(
            ST_WITHIN(
                ST_CENTROID((ST_SetSRID(structures.geom, 4326))), 
                ST_SetSRID((SELECT geom FROM sewers."Qrtr_Qrtr_Sections" WHERE "plat_page" = '510C'),4326)) )),5,3)

这部分代码可以正常工作:

SELECT "node_id" from sewers.structures
        WHERE(
        ST_WITHIN(
            ST_CENTROID((ST_SetSRID(structures.geom, 4326))), 
            ST_SetSRID((SELECT geom FROM sewers."Qrtr_Qrtr_Sections" WHERE "plat_page" = '510C'),4326)) )

但是当我在 运行 上选择 SELECT SUBSTRING() 时,出现以下错误:

ERROR:  more than one row returned by a subquery used as an expression
SQL state: 21000

应该对每个元素而不是整个查询调用 substring 函数:

SELECT SUBSTRING("node_id",5,3) 
FROM sewers.structures
WHERE ST_WITHIN ...