【问题标题】:Why does postgres distinct assign a type to strings?为什么 postgres distinct 为字符串分配类型?
【发布时间】:2017-03-30 00:50:32
【问题描述】:

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

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

关于数据类型,为什么添加DISTINCT 函数与不使用DISTINCT 运行查询不同?

【问题讨论】:

    标签: sql postgresql select distinct


    【解决方案1】:

    Chapter 10. Type Conversion 中描述了此行为。

    10.1. Overview你可以找到:

    如果没有为字符串文字指定类型,则最初分配占位符类型未知,以便在稍后阶段解决。

    要选择不同的值,Postgres 必须将字符串文字转换为具有相等运算符的类型。情况类似于联合:

    select 'abc', 1
    union
    select 'def', 1
    

    第一列被解析为text。规则在10.5. UNION, CASE, and Related Constructs中描述:

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

    【讨论】:

      猜你喜欢
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 2021-09-09
      • 2019-09-20
      • 2020-03-01
      • 1970-01-01
      • 2021-08-20
      相关资源
      最近更新 更多