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

PostgreSQL、SQL状態:42601

    これにより、匿名の複合値が作成されます:

    select (1, 'a');
    

    例:

    => select (1, 'a');
      row  
    -------
     (1,a)
    (1 row)
    
    => select row(1, 'a');
      row  
    -------
     (1,a)
    (1 row)
    

    これは単一の複合値であり、複数の値ではないことに注意してください。

    細かいマニュアルから:

    8.16.2。複合値入力

    複合値をリテラル定数として書き込むには、フィールド値を括弧で囲み、コンマで区切ります。任意のフィールド値を二重引用符で囲むことができます。カンマまたは括弧が含まれている場合は、二重引用符で囲む必要があります。
    [...]
    ROW 式の構文を使用して、複合値を作成することもできます。ほとんどの場合、これは文字列リテラル構文よりもかなり簡単に使用できます。これは、引用符の複数のレイヤーについて心配する必要がないためです。上記ですでにこの方法を使用しています:

    ROW('fuzzy dice', 42, 1.99)
    ROW('', 42, NULL)
    

    ROW 式に複数のフィールドがある限り、キーワードは実際にはオプションであるため、次のように簡略化できます。

    ('fuzzy dice', 42, 1.99)
    ('', 42, NULL)
    

    行コンストラクター セクションも興味深いかもしれません。

    あなたがこれを言うとき:

    INSERT INTO circuit (id_circuit, description, date_start, date_end, speed,
    length, duration)
    SELECT (...)
    FROM segment seg, wgs cir where seg.id = 13077
    

    SELECT 句には、全体として1つの列しかありません(...) 式は単一の値を表します。解決策は、これらの括弧を単に削除することです:

    INSERT INTO circuit (id_circuit, description, date_start, date_end, speed, length, duration)
    SELECT seg.id_segment, ..., (seg.date_end - seg.date_start)
    FROM segment seg, wgs cir where seg.id = 13077
    



    1. エラー1033は、スタンバイへのログオンを受信しました

    2. MySQLの数値に先行ゼロを追加する方法

    3. コンポーネント全体をユーザーにインストールせずに、ODACを使用する.NETアプリケーションを展開するにはどうすればよいですか?

    4. MariaDBEnterpriseBackupとClusterControlBackupManagementの比較