【发布时间】:2017-03-30 00:50:32
【问题描述】:
如果您执行SELECT 'test', 123,输出将是两列,第一列是未知数据类型,第二列是整数数据类型。
如果您执行SELECT DISTINCT 'test', 123,输出将是两列,第一列的数据类型为文本,第二列的数据类型为整数。
关于数据类型,为什么添加DISTINCT 函数与不使用DISTINCT 运行查询不同?
【问题讨论】:
标签: sql postgresql select distinct
如果您执行SELECT 'test', 123,输出将是两列,第一列是未知数据类型,第二列是整数数据类型。
如果您执行SELECT DISTINCT 'test', 123,输出将是两列,第一列的数据类型为文本,第二列的数据类型为整数。
关于数据类型,为什么添加DISTINCT 函数与不使用DISTINCT 运行查询不同?
【问题讨论】:
标签: sql postgresql select distinct
Chapter 10. Type Conversion 中描述了此行为。
在10.1. Overview你可以找到:
如果没有为字符串文字指定类型,则最初分配占位符类型未知,以便在稍后阶段解决。
要选择不同的值,Postgres 必须将字符串文字转换为具有相等运算符的类型。情况类似于联合:
select 'abc', 1
union
select 'def', 1
第一列被解析为text。规则在10.5. UNION, CASE, and Related Constructs中描述:
- 如果所有输入都是未知类型,则解析为文本类型(字符串类别的首选类型)。
【讨论】: