【问题标题】:PostgreSQL - return n-sized varchar from functionPostgreSQL - 从函数返回 n 大小的 varchar
【发布时间】:2016-11-11 12:38:32
【问题描述】:

正如我在文档中发现的那样:

带括号的类型修饰符(例如,类型的精度字段 numeric) 被 CREATE FUNCTION 丢弃

有没有其他方法可以从 plpgsql 函数返回 varchar(N) 类型?


问题更新:

在图片上您可以看到 Name 列被识别为 varchar(128),但是 Number 列被识别为 nonsized varchar

f_concat 函数返回:cast(res as varchar(255));

【问题讨论】:

  • 你认为你为什么需要它?你想解决什么问题?
  • @a_horse_with_no_name 一个旧的 Delphi 程序将所有内容都视为 TEXT BLOB。因此,如果我从 varchar(255) 列中选择字段,它会正确显示为 varchar(255),但如果我在该列结果上使用函数,那么即使我在函数内强制转换为 varchar(255),结果也会发生变化。跨度>
  • 我认为唯一的方法是对varchar(x)进行显式转换的视图
  • @Ice2burn:我们有一个旧的 Delphi 程序正好有这个问题,我们使用域作为解决方法

标签: postgresql


【解决方案1】:

您可以通过创建domain 来保留函数结果的类型修饰符。 Postgres 将在向您的客户端发送列描述时使用底层的varchar(N) 类型:

【讨论】:

    猜你喜欢
    • 2019-06-08
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 2013-12-25
    相关资源
    最近更新 更多