sql >> Databáze >  >> RDS >> PostgreSQL

CHYBA:Index sloupce je mimo rozsah:1, počet sloupců:0

Geometrické typy lze zadat několika způsoby.

  • V prvním formuláři vaše ? parametry nejsou nahrazeny hodnotami, protože jsou doslovnými částmi řetězce. Očekává se tedy 0 parametrů ...

  • Ve druhém tvaru bez jednoduchých uvozovek vaše ? parametry jsou nahrazeny, ale ((18.9750,72.8258), 5) je interpretován jako typ řádku, který nefunguje s circle() .

Pokoušíte se vyvolat geometrickou funkci circle() který zabere point a double precision ("střed a poloměr kruhu"). Toto jsou platné varianty syntaxe:

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

Hudly SQL.
Odeslání do ::text je jen dezinfikovat vyšinutý displej v SQL housle

Ve vašem případě zadejte číselné hodnoty (nikoli řetězcový literál), použijte poslední formu a mělo by to fungovat:

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

Pokud wso2dss (se kterým nemám zkušenosti) nepřijímá funkce, musíte použít jeden z prvních dvou formulářů a poskytnout single parametr jako řetězcový literál:

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

... kde parametr je zřetězený literál, jak je zobrazeno výše.

Mohli byste nechat Postgres provést zřetězení a přesto předat tři číselné hodnoty:

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



  1. ORA-30926:nelze získat stabilní sadu řádků ve zdrojových tabulkách

  2. Jak najít název města nezačínající a končící samohláskou

  3. Jak extrahovat tento konkrétní podřetězec v SQL Server?

  4. Spouštění úloh údržby databáze SQL pomocí SQLCMD