Creo que va a ser algo como esto:
El cuadro delimitador en PostGIS es creado por
ST_GeomFromText('POLYGON((ulx uly, urx ury, llx llr, lrx lry, ulx uly))', <srid>)
La consulta va a utilizar ST_Intersection con una subconsulta.
SELECT bbox_nodes.id, bbox_nodes.tag, nodes_geom
FROM (SELECT nodes.id, nodes.tag,
ST_Intersection(nodes.the_geom,
ST_GeomFromText('POLYGON((ulx uly, urx ury, llx llr, lrx lry, ulx uly))', <srid> )).geom AS nodes_geom
FROM nodes
WHERE ST_Intersects(nodes.the_geom,
ST_GeomFromText('POLYGON((ulx uly, urx ury, llx llr, lrx lry, ulx uly))', <srid> )) AS bbox_nodes
WHERE ST_Dimension(bbox_nodes.nodes_geom)=0;
Yo más o menos llevo esto de La PostGIS páginas de ayuda
Una segunda consulta, en las maneras de mesa, de diseño similar a la anterior (pero con ST_Dimension()=1 ) deben recibir las maneras.
HTH,
Micha