sql >> Database teknologi >  >> RDS >> PostgreSQL

FEJL:Kolonneindekset er uden for interval:1, antal kolonner:0

Geometriske typer kan indtastes på flere måder.

  • I den første formular, din ? parametre erstattes ikke med værdier, fordi de er bogstavelige dele af en streng. Så 0 parametre forventes ...

  • I den anden form uden enkelte anførselstegn, din ? parametre erstattes, men ((18.9750,72.8258), 5) tolkes til at være en rækketype, som ikke virker med circle() .

Du forsøger at påkalde den geometriske funktion circle() der tager et point og en double precision ("center og radius til cirkel"). Disse er gyldige syntaksvarianter:

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 violin.
Castet til ::text er bare for at rense den forvirrede visning i SQL violin

I dit tilfælde for at angive numeriske værdier (ikke en streng bogstavelig), brug den sidste form, og den burde virke:

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

Hvis wso2dss (som jeg ikke har erfaring med) ikke accepterer funktioner, skal du bruge en af ​​de to første formularer og give en enkelt parameter som streng literal:

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

... hvor parameteren er den sammenkædede literal som vist ovenfor.

Du kunne lad Postgres udføre sammenkædningen og stadig sende tre numeriske værdier:

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



  1. Oprettelse af en triggergenererende ID-kolonneværdi før indsættelse, når nye tabeller oprettes

  2. mysql innodb transaktion samtidighed

  3. konverter liste til streng for at indsætte i min sql i én række i python scrapy

  4. Kan PostgreSQL udføre en joinforbindelse mellem to SQL Server-lagrede procedurer?