SELECT
出力列
これまでの節で挙げた規則は、SELECT
コマンドの単純な出力列として現れる型の指定されていないリテラルを除いて、SQL問い合わせでunknown
でないデータ型をすべての式に割り当てることになります。
例えば、以下で
SELECT 'Hello World';
文字列リテラルをどの型とみなすべきかを示すものは何もありません。
この状況ではPostgreSQLはリテラルの型をtext
として解決することになります。
SELECT
がUNION
(またはINTERSECT
、またはEXCEPT
)構文の片方である場合やINSERT ... SELECT
の中に現れる場合は、これまでの節で挙げた規則が優先しますので、この規則は適用されません。
型の指定されていないリテラルの型は、1番目の場合にはUNION
の他の側から、2番目の場合には対象とする列から取られるでしょう。
RETURNING
リストは、この目的のためにSELECT
出力リストと同様に扱われます。
PostgreSQL 10より前では、この規則は存在せず、SELECT
出力リストの中の型の指定されていないリテラルは型unknown
のままでした。
これは様々な悪い結果をもたらしましたので、変更されました。