sql >> データベース >  >> RDS >> PostgreSQL

エラー:列インデックスが範囲外です:1、列数:0

    ジオメトリタイプ 複数の方法で入力できます。

    • 最初の形式では、 パラメータは文字列のリテラル部分であるため、値に置き換えられません。したがって、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;
    



    1. SpringDataが@Column名を理解していないようです

    2. MySQLのすべてのレコードに対して一意のタイムスタンプを取得できますか?

    3. idとsub_idを降順で並べ替えるにはどうすればよいですか?

    4. 複数の注文からの請求書?