为什么postgres将字符串分配给字符串?

Log*_*gan 3 sql postgresql select distinct

如果执行SELECT 'test', 123输出将是两列,第一列具有未知数据类型,第二列具有整数数据类型.

如果执行SELECT DISTINCT 'test', 123输出将是两列,第一列是数据类型的文本,第二列是数据类型为整数.

为什么添加DISTINCT功能与运行查询不同而不DISTINCT涉及数据类型?

kli*_*lin 8

第10章类型转换中描述了此行为.

10.1.您可以找到以下概述:

如果没有为字符串文字指定类型,则最初会分配占位符类型unknown,以便在以后的阶段中解析.

要选择不同的值,Postgres必须将字符串文字转换为具有相等运算符的类型.案件类似于工会:

select 'abc', 1
union
select 'def', 1
Run Code Online (Sandbox Code Playgroud)

将第一列解析为的位置text.该规则在10.5中描述.UNION,CASE和相关构造:

  1. 如果所有输入都是未知类型,请解析为类型文本(字符串类别的首选类型).