PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

BŁĄD :Indeks kolumny jest poza zakresem:1, liczba kolumn:0

Typy geometryczne można wprowadzać na wiele sposobów.

  • W pierwszej formie Twój ? parametry nie są zastępowane wartościami, ponieważ są to dosłowne części ciągu. Oczekuje się więc 0 parametrów ...

  • W drugiej formie bez pojedynczych cudzysłowów Twój ? parametry są zastępowane, ale ((18.9750,72.8258), 5) jest interpretowany jako typ wiersza, który nie działa z circle() .

Próbujesz wywołać funkcję geometryczną circle() który zajmuje point i double precision („środek i promień do okręgu”). Oto prawidłowe warianty składni:

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

Skrzypce SQL.
Rzut na ::text jest tylko oczyszczenie obłąkanego wyświetlacza w skrzypcach SQL

W Twoim przypadku, aby podać wartości liczbowe (nie literał ciągu), użyj ostatniej formy i powinno działać:

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

Jeśli wso2dss (z którym nie mam doświadczenia) nie akceptuje funkcji, musisz użyć jednego z dwóch pierwszych formularzy i podać pojedynczy parametr jako literał ciągu:

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

... gdzie parametr jest połączonym literałem, jak pokazano powyżej.

możesz pozwól Postgresowi wykonać konkatenację i nadal przekazywać trzy wartości liczbowe:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytania parametryczne za pomocą psycopg2 / Python DB-API i PostgreSQL

  2. Lokalna instalacja/uruchamianie bazy danych Postgres

  3. Postgres tworzący tabelę z tablicą kluczy obcych

  4. Policz liczbę dni między 2 datami w JPA

  5. Aktualizacja z PostGIS 2.1:Błąd:próba przedefiniowania parametru postgis.backend