【问题标题】:How do I convert a character to integer within a PostgreSQL (9.1) function?如何在 PostgreSQL (9.1) 函数中将字符转换为整数?
【发布时间】:2013-01-23 11:25:42
【问题描述】:

我有以下代码:

BEGIN
   x := split_part(text, ',', 1);
   UPDATE albumphoto SET order = 1 WHERE idtable = 1 AND idx = x;   
END

但是我的名为idx的列表是数值类型,而split_part返回一个字符类型给变量x。我试过使用CAST,但不知道如何正确使用。

有什么想法吗?

【问题讨论】:

    标签: postgresql types casting postgresql-9.1


    【解决方案1】:

    或者更简单:

    UPDATE albumphoto
    SET    order = 1
    WHERE  idtable = 1
    AND    idx = split_part(text, ',', 1)::int  -- or whatever type it is
    AND    order IS DISTINCT FROM 1;
    

    expression::type 是一种简单的(非 SQL 标准的)Postgres 转换方式。详情请看手册Type Casts一章。
    更多关于data types in PostgreSQL

    如果order 已经成为 1,我添加的最后一个谓词很有用,在这种情况下更新不会改变任何东西,但成本仍然相同。而是什么都不做。相关(考虑最后一段):

    而且您在这里也不需要变量。

    【讨论】:

      【解决方案2】:

      像这样:

      UPDATE albumphoto SET order = 1 WHERE idtable = 1 AND idx = CAST (x AS INTEGER);
      

      (使用适当的数字类型而不是INTEGER)。

      【讨论】:

        猜你喜欢
        • 2013-04-01
        • 2020-09-20
        • 2014-12-04
        • 1970-01-01
        • 1970-01-01
        • 2016-02-01
        • 1970-01-01
        • 2017-12-04
        相关资源
        最近更新 更多