【问题标题】:Postgres data type castPostgres 数据类型转换
【发布时间】:2012-11-20 12:56:09
【问题描述】:

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

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

【问题讨论】:

  • 仅供参考,说“PostgreSQL 8”有点像说“Windows 6”。 Windows XP 为 5.1(或 x64 为 5.2),Vista 为 6.0,Windows 7 为 6.1。他们都很不一样! PostgreSQL 也一样; PostgreSQL 8.0 和 8.4 之间有 5 年的时间和巨大的技术差异,所以请始终指定 完整 版本。

标签: java sql postgresql casting


【解决方案1】:
<b>cast(varchar_col AS int)</b>  -- SQL standard

<b>varchar_col::int</b>          -- Postgres syntax shorthand

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

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

还有两种变体:

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

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

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

手册中的详细信息herehere

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

【讨论】:

  • 如果字符数据类型则不起作用
  • @AbelMelquiadesCallejo:“它”是什么?以上所有内容都适用于数据类型character(除非明确指出)。当然,字符串必须是有效的整数。
猜你喜欢
  • 2016-07-19
  • 1970-01-01
  • 2018-05-14
  • 2018-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多