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

行コンストラクターは何に使用されますか?

    あなたは抽象化のレベルを混乱させています。他の回答がすでに指摘しているように、CREATE TYPE (複合/行)タイプのみをシステムに登録します。 ROW コンストラクターは実際に行を返します。

    ROWで作成された行タイプ コンストラクターは列名を保持しません。これは、行をJSONに変換しようとすると明らかになります。

    そこにいる間、ROW 単なるノイズワードです ほとんどの時間。 ドキュメント:

    デモ:

    SELECT t                              AS r1, row_to_json(t)                           AS j1
         , ROW(1, 'x', NUMERIC '42.1')    AS r2, row_to_json(ROW(1, 'x', NUMERIC '42.1')) AS j2
         ,    (1, 'x', NUMERIC '42.1')    AS r3, row_to_json(   (1, 'x', NUMERIC '42.1')) AS j3
         ,    (1, 'x', '42.1')::myrowtype AS r4, row_to_json((1, 'x', '42.1')::myrowtype) AS j4
    FROM (SELECT 1, 'x', NUMERIC '42.1') t;
    

    db <> fiddle こちら
    sqlfiddle

    r1 およびj1 元の列名を保持します。
    r2 およびj2 しないでください。
    r3 およびj3 同じだ; ROW ただのノイズです。
    r4 およびj4 登録されたタイプの列名を付けます。

    number の場合、行(レコード)を登録済みの行タイプにキャストできます およびデータ型 の要素が行タイプに一致します-名前 入力フィールドの数は無視されます。



    1. MySqlは、URLを作成するためにプレオーダーツリーを変更しました

    2. SQL状態:42883、指定された名前と引数のタイプに一致する関数はありません。しかし、その機能は実際に存在します

    3. グループ関数を使用したデータの集約(oracleによるグループ化)

    4. Oraclesql派生テーブル-オプションのエイリアシング