postgresql - 如何在 postgresql 中转换为用户定义的类型

标签 postgresql casting

我必须创建一个包含一些用户定义类型的表并插入数据。

我试过这种方式。

  1. 创建类型 type1 为 (i int);
  2. 创建函数 mycast(int) 将 type1 返回为“select $1;”语言“sql”;
  3. 使用函数 mycast(int) 隐式创建类型转换(int as type1);
  4. 创建表 table_type(t type1);
  5. 插入 table_type 值(1::type1);

现在值被插入但用括号括起来,像这样

select * from table_type;

  t  
--------
 (1)

(1 rows)

我认为我的功能可能有错误。有人可以帮忙吗。我基本上想要一个函数,它返回与我的输入相同的输出(没有任何 () )。

谢谢。

最佳答案

您定义的类型是一个复合类型,包含一个 int 类型的属性。复合类型的文本表示是属性列表周围的括号。但是从你的 cast 函数(它被破坏了,因为它返回一个标量而不是复合类型)来看,这根本不是你想要的。你能做的最好的事情就是像这样定义一个域:

create domain type1 as int;

那么你甚至不需要强制转换。

关于postgresql - 如何在 postgresql 中转换为用户定义的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7325204/

相关文章:

oracle - 如何将 Oracle 特定函数 TO_NUMBER 重写为 ANSI SQL

Linux (Fedora) 无法在终端中运行 psql 命令 - 角色不存在

python - SQLAlchemy 中的依赖 CTE? (里面的例子)

c++ - 为什么以及何时需要转换为 char volatile&?

c++ - 具有虚拟性的多级层次结构可防止强制转换函数指针

sql - "$$ 处或附近未终止的美元引号字符串

postgresql - pl/pgsql 数组作为聚合函数的输入

vb.net - 无法将类型 'System.Int32' 的对象强制转换为类型 'System.String'

c# - 将类转换为其具有泛型类型的接口(interface)时出错(同时将泛型类型转换为其基类)

c# - DataTable 将字段值转换为 T