今日、値のuuidを定義したかった00000000-0000-0000-0000-000000000000
。 SQL Serverの男性なので、私は 通常 ...
select cast(0x0 as uniqueidentifier);
...しかし、私は今postgresの世界にいるので、 賢明 ...
select cast('\x00'::bytea as uuid);
ERROR: cannot cast type bytea to uuid
LINE 1: select cast('\x00'::bytea as uuid);
^
くそー!だから私は 型変換に関するpostgresのドキュメントthis one のようなドキュメントを参照して、デフォルトで 明示的なキャストを作成する 。
そのようなチャートがドキュメントに存在する場合、それはよく隠されています。同様に、Googleもこの点であまり役に立ちません。
Postgresqlのデフォルトの許容される型キャストの適切なドキュメントリファレンスはありますか?
明確にするために、私は実際にはuuidを気にしません
psql
クライアントを使用してリストを取得できます
\dCS
これにより、システムデータタイプ間で定義されたすべてのキャストが表示されます。
さらに、すべての型は、型の入力関数と出力関数を使用してtext
との間でキャストできます。
ローレンツの投稿の補足として ...
docs から:
_
\dC[+] [ pattern ]
_型キャストをリストします。パターンが指定されている場合、ソースまたはターゲットのタイプがパターンに一致するキャストのみがリストされます。コマンド名に+が追加されている場合、各オブジェクトは関連する説明とともにリストされます。
_\set ECHO_HIDDEN on
_は_\dCS+
_が実行中であることを明らかにします...
_SELECT pg_catalog.format_type(castsource, NULL) AS "Source type",
pg_catalog.format_type(casttarget, NULL) AS "Target type",
CASE WHEN c.castmethod = 'b' THEN '(binary coercible)'
WHEN c.castmethod = 'i' THEN '(with inout)'
ELSE p.proname
END AS "Function",
CASE WHEN c.castcontext = 'e' THEN 'no'
WHEN c.castcontext = 'a' THEN 'in assignment'
ELSE 'yes'
END AS "Implicit?",
d.description AS "Description"
FROM pg_catalog.pg_cast c LEFT JOIN pg_catalog.pg_proc p
ON c.castfunc = p.oid
LEFT JOIN pg_catalog.pg_type ts
ON c.castsource = ts.oid
LEFT JOIN pg_catalog.pg_namespace ns
ON ns.oid = ts.typnamespace
LEFT JOIN pg_catalog.pg_type tt
ON c.casttarget = tt.oid
LEFT JOIN pg_catalog.pg_namespace nt
ON nt.oid = tt.typnamespace
LEFT JOIN pg_catalog.pg_description d
ON d.classoid = c.tableoid AND d.objoid = c.oid AND d.objsubid = 0
WHERE ( (true AND pg_catalog.pg_type_is_visible(ts.oid)
) OR (true AND pg_catalog.pg_type_is_visible(tt.oid)
) )
ORDER BY 1, 2;
_
...これにより、さらに興味深いドキュメントページがいくつか示されます。
pg_cast
_ -許可されるキャストをリストする基本システムテーブルpg_type
_ -データ型の基本システムテーブルリファレンスformat_type()
-_pg_type
_のプリッティファイア関数。 データ型参照テーブル に見られるように、固有名をエイリアスにマッピングするのに役立ちます。