sql >> Database >  >> RDS >> PostgreSQL

FOUT:De kolomindex valt buiten het bereik:1, aantal kolommen:0

Geometrische typen kan op meerdere manieren worden ingevoerd.

  • In het eerste formulier, uw ? parameters worden niet vervangen door waarden omdat ze letterlijke delen van een tekenreeks zijn. Er worden dus 0 parameters verwacht ...

  • In het tweede formulier zonder enkele aanhalingstekens, uw ? parameters worden vervangen, maar ((18.9750,72.8258), 5) wordt geïnterpreteerd als een rijtype dat niet werkt met circle() .

U probeert de geometrische functie circle() dat kost een point en een double precision ("middelpunt en straal tot cirkel"). Dit zijn geldige syntaxisvarianten:

SELECT circle '((18.9750,72.8258), 5)'        AS cast_literal
     ' <(18.9750,72.82580),5>'::circle        AS cast_literal2
     , circle(point '(18.9750,72.8258)', '5') AS literal_point_n_radius
     , circle(point(18.9750,72.8258), '5')    AS point_n_literal_radius
     , circle(point(18.9750,72.8258), 5)      AS point_n_radius

SQL-viool.
De cast van ::text is gewoon om de gestoorde weergave in SQL-viool te zuiveren

In uw geval, om numerieke waarden op te geven (geen letterlijke tekenreeks), gebruik de laatste vorm en het zou moeten werken:

SELECT addressid, geocode
FROM   maddress
WHERE  geocode::point <@ circle(point(?,?), ?);

Als wso2dss (waar ik geen ervaring mee heb) geen functies accepteert, moet je een van de eerste twee vormen gebruiken en een single opgeven parameter als letterlijke tekenreeks:

SELECT addressid, geocode
FROM   maddress
WHERE  geocode::point <@ circle ?;

... waarbij de parameter de aaneengeschakelde letterlijke waarde is zoals hierboven weergegeven.

Je zou laat Postgres de aaneenschakeling doen en geef nog steeds drie numerieke waarden door:

SELECT addressid, geocode
FROM   maddress
WHERE  geocode::point <@ ('(('::text || ? || ',' || ? || '),' || ? || ')')::circle;



  1. Hoe id-set van 1 updaten?

  2. Kan tijdzones niet worden geladen?

  3. Postgres - FATAL:databasebestanden zijn niet compatibel met de server

  4. TRIM() Functie in Oracle