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

Geo*_*sos 8 postgresql types casting postgresql-9.1

我有以下代码:

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

但我的列表名idx是一个数字类型,并split_part返回一个字符类型的变量x.我尝试过使用CAST,但我不知道如何正确使用它.

有任何想法吗?

Ant*_*nko 14

像这样:

UPDATE albumphoto SET order = 1 WHERE idtable = 1 AND idx = CAST (x AS INTEGER);
Run Code Online (Sandbox Code Playgroud)

(使用适当的数字类型代替INTEGER).


Erw*_*ter 7

或者更简单:

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;
Run Code Online (Sandbox Code Playgroud)

expression::type是一种简单的(非SQL标准)Postgres方式." 类型转换 "一章中的手册中的详细信息.
有关PostgreSQL中数据类型的更多信息.

我添加的最后一个谓词是有用的,如果order已经可以 1,在这种情况下更新不会改变任何东西,但仍然花费相同.而不是做任何事情.相关(考虑最后一段):

而且你在这里不需要变量.