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

时间:2011-09-06 19:37:23

标签: postgresql casting

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

我试过这种方式。

  1. 将类型type1创建为(i int);
  2. create function mycast(int)将type1作为'select $ 1;'返回language'sql';
  3. 使用函数mycast(int)创建cast(int为type1)为隐式;
  4. create table table_type(t type1);
  5. 插入table_type值(1 :: type1);
  6. 现在这些值已插入但用括号括起来,就像这样

    select * from table_type;
    
      t  
    --------
     (1)
    
    (1 rows)
    

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

    感谢。

1 个答案:

答案 0 :(得分:2)

您定义的类型是包含一个int类型属性的复合类型。复合类型的文本表示是属性列表周围的括号。但是根据你的强制转换函数判断(因为它返回标量而不是复合类型),这根本不是你想要的。你能做的最好的事情是定义一个这样的域:

create domain type1 as int;

然后你甚至不需要演员。