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

集計initcondの作成におけるpostgresql不正な形式の配列リテラル

    配列を引用符で囲む必要があります。これは、配列がテキストバージョンの行にあるためです。

    入力を行として取得し、postgresがどのようにフォーマットするかを確認することで簡単にテストできます({}のため、ここでは配列を一重引用符で囲む必要があります) テキスト内の配列です):

    SELECT ROW(0,NULL,NULL, 0, 0, 0, 0, '{}', '{1,2,3,4,5}', '{1,2,3,4,5}', '{0,0.25,0.5,0.75,1}')
    

    返品:

    (0,,,0,0,0,0,{},"{1,2,3,4,5}","{1,2,3,4,5}","{0,0.25,0.5,0.75,1}")
    

    したがって、次のことを行う必要があります。

    ...
    initcond = '(0,,,0,0,0,0,{},"{1,2,3,4,5}","{1,2,3,4,5}","{0,0.25,0.5,0.75,1}")'
    

    空の配列または値が1つしかない配列で引用符が不要な理由:

    配列内の複数の値はコンマで区切られ、行内のフィールドもコンマで区切られます。行を'(0,{1,2})'として指定した場合 、PGはこれを次の3つのフィールドとして解釈します:0{12} 。当然、その場合、不正な形式の配列に関するエラーが発生します。フィールドを引用符で囲むということは、それらの引用符内のすべてが1つのフィールドであることを意味します。したがって、'(0,"{1,2}")' 0として正しく解釈されます 、{1,2} 。配列が空であるか、値が1つしかない場合は、カンマがないため、そのフィールドを正しく解析するのに問題はありません。




    1. MySQLコマンドライン結果の出力形式をCSVに変更します

    2. 2つのテーブルの違いを取得しますか?

    3. MySQL整数0とNULL

    4. IF構文エラー