Aujourd'hui, je voulais définir un uuid de valeur 00000000-0000-0000-0000-000000000000
. En tant qu'homme SQL Server, je généralement ...
select cast(0x0 as uniqueidentifier);
... mais je suis dans le monde postgres maintenant donc j'ai fouetté un sensible ...
select cast('\x00'::bytea as uuid);
ERROR: cannot cast type bytea to uuid
LINE 1: select cast('\x00'::bytea as uuid);
^
Zut! Je me dirige donc vers les documents postgres sur la conversion de type en espérant voir un document comme celui-ci pour examiner les types de données que je peux convertir entre par défaut sans avoir besoin de créer une distribution explicite .
Si un tel graphique existe dans les documents, il est bien caché. Google n'est pas non plus super utile à cet égard.
Existe-t-il une bonne référence de documentation pour les conversions de types autorisés par défaut dans postgresql?
Pour être clair, je ne me soucie pas vraiment de l'uuid
Vous pouvez obtenir une liste en utilisant le client psql
avec
\dCS
Cela montrera toutes les conversions définies entre les types de données système.
De plus, tous les types peuvent être convertis vers et depuis text
à l'aide des fonctions d'entrée et de sortie de type.
En complément de poste de Laurenz ...
De les docs :
\dC[+] [ pattern ]
Répertorie les transtypages. Si le modèle est spécifié, seuls les transtypages dont les types source ou cible correspondent au modèle sont répertoriés. Si + est ajouté au nom de la commande, chaque objet est répertorié avec sa description associée.
\set ECHO_HIDDEN on
Révèle que \dCS+
Est en cours d'exécution ...
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;
... ce qui nous amène à quelques pages de documentation plus intéressantes.
pg_cast
- le tableau du système de base répertoriant les conversions autoriséespg_type
- la référence de la table système de base pour les types de donnéesformat_type()
- une fonction prettifier pour pg_type
. Utile pour mapper les noms propres aux alias comme indiqué sur la table de référence des types de données