PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

KESALAHAN:Indeks kolom di luar jangkauan:1, jumlah kolom:0

Jenis geometris dapat dimasukkan dalam berbagai cara.

  • Pada formulir pertama, ? . Anda parameter tidak diganti dengan nilai karena mereka adalah bagian literal dari string. Jadi 0 parameter diharapkan ...

  • Dalam bentuk kedua tanpa tanda kutip tunggal, ? . Anda parameter diganti, tetapi ((18.9750,72.8258), 5) ditafsirkan sebagai tipe baris, yang tidak berfungsi dengan circle() .

Anda mencoba menjalankan fungsi geometris circle() yang mengambil point dan double precision ("pusat dan jari-jari ke lingkaran"). Ini adalah varian sintaks yang valid:

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 fiddle.
Pemeran ke ::text hanya untuk membersihkan tampilan gila di biola SQL

Dalam kasus Anda, untuk memberikan nilai numerik (bukan literal string), gunakan formulir terakhir dan itu akan berfungsi:

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

Jika wso2dss (yang saya tidak punya pengalaman dengannya) tidak menerima fungsi, Anda harus menggunakan salah satu dari dua formulir pertama dan memberikan tunggal parameter sebagai string literal:

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

... di mana parameternya adalah literal gabungan seperti yang ditampilkan di atas.

Anda bisa biarkan Postgres melakukan penggabungan dan tetap memberikan tiga nilai numerik:

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. Jika hitungan PostgreSQL (*) selalu lambat, bagaimana cara membuat halaman kueri kompleks?

  2. Opsi Pencadangan Cloud untuk PostgreSQL

  3. Pembuatan data dan kualitas perangkat keras

  4. Perbedaan antara Replikasi Aliran dan replikasi logis

  5. Cara Mendapatkan Hari Tahun Ini dari Tanggal di PostgreSQL