PostgreSQL SELECT的輸出列

2021-08-27 11:41 更新

前面的小節(jié)中給出的規(guī)則將會(huì)導(dǎo)致對(duì)SQL查詢中的所有表達(dá)式分配非unknown數(shù)據(jù)類型,不過(guò)作為SELECT命令的簡(jiǎn)單輸出列出現(xiàn)的未指定類型的文本除外。例如,在

SELECT 'Hello World';

中沒(méi)有標(biāo)識(shí)該字符串應(yīng)該取何種類型。在這種情況下,PostgreSQL將會(huì)退而求其次將其類型決定為text。

當(dāng)SELECT處于UNION(或者INTERSECT,或者EXCEPT)結(jié)構(gòu)的一邊或者出現(xiàn)在INSERT ... SELECT中時(shí),這條規(guī)則就不適用了,因?yàn)樵谇懊嫘」?jié)中給出的規(guī)則會(huì)優(yōu)先。在第一種情況下未指定類型文本的類型將從 UNION的另一邊取得,而在第二種情況下未指定類型文本的類型將從目標(biāo)列取得。

出于這樣的目的,RETURNING列表采用和SELECT輸出列表同樣的方式對(duì)待。

注意

PostgreSQL 10之前,這條規(guī)則還不存在,SELECT輸出列表中未指定類型的文本的類型會(huì)被留成unknown。這樣做會(huì)導(dǎo)致各種不好的后果,因此新版本中做出了改變。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)