PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 13.17 » Langage SQL » Conversion de types » Colonnes de sortie du SELECT

10.6. Colonnes de sortie du SELECT

Les règles des sections précédentes auront pour résultat d'assigner les types de données autres que unknown à toutes les expressions dans la requête SQL, à l'exception des littéraux de type non spécifié apparaissant en tant que colonne de sortie dans une commande SELECT. Par exemple, dans :

SELECT 'Hello World';

rien ne permet d'identifier quel devrait être le type du litteral chaîne de caractères. Dans ce cas, PostgreSQL résoudra le type du littéral en type text.

Lorsque le SELECT fait partie d'une construction UNION (ou INTERSECT EXCEPT) ou lorsqu'il apparaît dans un INSERT ... SELECT, cette règle n'est pas appliquée, car les règles des sections précédentes ont priorité. Le type d'un littéral au type non spécifié peut être choisi d'après l'autre partie d'un UNION dans le premier cas, ou d'après la colonne de destination dans le second cas.

Dans ce but, les listes RETURNING sont traitées de la même manière que les retours de SELECT.

Note

Avant la version 10 de PostgreSQL, cette règle n'existait pas, et les littéraux aux types non spécifiés dans la sortie d'un SELECT étaient de type unknown. Suite à plusieurs conséquences néfastes, ce comportement a été modifié.