我有這樣的下面的代碼:如何在PostgreSQL(9.1)函數中將字符轉換爲整數?
BEGIN
x := split_part(text, ',', 1);
UPDATE albumphoto SET order = 1 WHERE idtable = 1 AND idx = x;
END
但我命名idx
列表是一個數字類型,split_part
返回字符類型變量x
。我試過使用CAST
,但我不知道如何正確使用它。
任何想法?
我有這樣的下面的代碼:如何在PostgreSQL(9.1)函數中將字符轉換爲整數?
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一章。
更多關於data types in PostgreSQL。
我最後添加的謂詞是有用的,如果order
可能已經是1
,在這種情況下,更新不會改變什麼,但費用仍然是相同的。反而不要做任何事情。相關(考慮最後一段):
而你在這裏做不需要的變量。