38

我的数据库是 Postgres 8。我需要将数据类型转换为另一个。这意味着,其中一种列数据类型是varchar并且需要在语句int中使用 Postgres将其转换为。SELECT

目前,我获取字符串值并将其转换int为 Java。
有什么办法吗?示例代码将不胜感激。

4

1 回答 1

69
cast(varchar_col AS int)  -- SQL standard

或者

varchar_col::int          -- Postgres syntax shorthand

这些语法变体在任何地方(几乎)都有效。第二个可能需要在特殊情况下嵌套括号:

如果语法限制只允许功能符号,则可能需要第一个:

还有两种变体:

int4(varchar_col)         -- only works for some type names
int '123'                 -- must be an untyped, quoted string literal

注意我是怎么写的。那是内部类型名称,并且还为它定义了一个函数。不能用作or 。int4(varchar_col)integer()int()

另请注意,最后一种形式不适用于数组类型。int[] '{1,2,3}'必须是'{1,2,3}'::int[]or cast('{1,2,3}' AS int[])

此处此处的手册中的详细信息。

要对 有效integer,字符串必须由可选的前导符号 ( +/ -) 后跟数字组成。前导/尾随空格被忽略。

于 2012-12-03T03:48:34.613 回答