如何在PostgreSQL(9.1)函数中将字符转换为整数?

10

我有如下代码:

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

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

有什么想法吗?

2个回答

20
就像这样:

Like this:

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

使用适当的数值类型代替INTEGER


8

或更简单:

UPDATE albumphoto
SET    "order" = 1
WHERE  idtable = 1
AND    idx = split_part(text, ',', 1)::int  -- cast to actual type (if not a string type)
AND    "order" IS DISTINCT FROM 1;

expression::type是Postgres的简单(非SQL标准)类型转换方式。有关详细信息,请参阅手册中的类型转换章节。
有关PostgreSQL中的数据类型的更多信息。

我添加的最后一个谓词在"order"已经是1时非常有用,此时更新不会改变任何内容-代价很大。与其如此,不如什么都不做。相关内容请参见最后一段:

您不需要一个变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接