codecamp

PostgreSQL SELECT的输出列

前面的小节中给出的规则将会导致对SQL查询中的所有表达式分配非unknown数据类型,不过作为SELECT命令的简单输出列出现的未指定类型的文本除外。例如,在

SELECT 'Hello World';

中没有标识该字符串应该取何种类型。在这种情况下,PostgreSQL将会退而求其次将其类型决定为text

SELECT处于UNION(或者INTERSECT,或者EXCEPT)结构的一边或者出现在INSERT ... SELECT中时,这条规则就不适用了,因为在前面小节中给出的规则会优先。在第一种情况下未指定类型文本的类型将从 UNION的另一边取得,而在第二种情况下未指定类型文本的类型将从目标列取得。

出于这样的目的,RETURNING列表采用和SELECT输出列表同样的方式对待。

注意

PostgreSQL 10之前,这条规则还不存在,SELECT输出列表中未指定类型的文本的类型会被留成unknown。这样做会导致各种不好的后果,因此新版本中做出了改变。

PostgreSQL UNION、CASE和相关结构
PostgreSQL 索引
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PostgreSQL SQL语言

PostgreSQL 服务器管理

PostgreSQL 客户端接口

PostgreSQL 服务器编程

PostgreSQL 参考

PostgreSQL 内部

PostgreSQL 附录

PostgreSQL 参考书目

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }