我有以下代码:
BEGIN
x := split_part(text, ',', 1);
UPDATE albumphoto SET order = 1 WHERE idtable = 1 AND idx = x;
END
但是我命名的列表idx
是数字类型,并且split_part
将字符类型返回给变量x
。我试过使用CAST
,但我不知道如何正确使用它。
有任何想法吗?
我有以下代码:
BEGIN
x := split_part(text, ',', 1);
UPDATE albumphoto SET order = 1 WHERE idtable = 1 AND idx = x;
END
但是我命名的列表idx
是数字类型,并且split_part
将字符类型返回给变量x
。我试过使用CAST
,但我不知道如何正确使用它。
有任何想法吗?
像这样:
UPDATE albumphoto SET order = 1 WHERE idtable = 1 AND idx = CAST (x AS INTEGER);
(使用适当的数字类型而不是INTEGER
)。
或更简单:
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一章中的详细信息。
更多关于PostgreSQL 中的数据类型。
order
我添加的最后一个谓词 if could already be 很有用1
,在这种情况下更新不会改变任何东西,但成本仍然相同。而是什么都不做。相关(考虑最后一段):
而且您在这里不需要变量。