ジオメトリタイプ 複数の方法で入力できます。
-
最初の形式では、
?
パラメータは文字列のリテラル部分であるため、値に置き換えられません。したがって、0個のパラメータが期待されます... -
一重引用符のない2番目の形式では、
?
パラメータは置き換えられますが、((18.9750,72.8258)、5)
circle()
では機能しない行タイプとして解釈されます 。
幾何関数<を呼び出そうとしています。 code> circle()
ポイント
が必要です および倍精度
(「中心と円の半径」)。これらは有効な構文バリアントです:
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フィドル。
::text
へのキャスト SQLフィドルの乱れた表示をサニタイズするだけです
あなたの場合、数値を提供する (文字列リテラルではありません)、最後の形式を使用すると、機能するはずです:
SELECT addressid, geocode
FROM maddress
WHERE geocode::point <@ circle(point(?,?), ?);
wso2dss(私は経験がありません)が関数を受け入れない場合は、最初の2つの形式のいずれかを使用して、単一を提供する必要があります。 文字列リテラルとしてのパラメータ:
SELECT addressid, geocode
FROM maddress
WHERE geocode::point <@ circle ?;
...ここで、パラメーターは上に表示されている連結リテラルです。
あなたはできた Postgresに連結を実行させ、それでも3つの数値を渡します:
SELECT addressid, geocode
FROM maddress
WHERE geocode::point <@ ('(('::text || ? || ',' || ? || '),' || ? || ')')::circle;