sql - 如果列在 PostgreSQL 中同时包含 int 和 NULL 值,如何从文本转换为 int

标签 sql postgresql casting null

如题。我有一列有一些文本值。例如,列 data1 具有值 ('31',32','',NULL)。现在我想用来自 data1 的数据更新另一列 data2(类型 INT),所以我正在尝试做类似的事情:

UPDATE table SET data2=CAST(data1 AS INT).

问题是因为 PostgreSQL 不能将 NULL 或空值转换为 INT。

最佳答案

实际上,您可以将NULL 转换为int,只是不能将空字符串转换为int。假设如果 data1 包含空字符串或 NULL,您希望在新列中使用 NULL,您可以执行如下操作:

UPDATE table SET data2 = cast(nullif(data1, '') AS int);

如果你想要一些其他的逻辑,你可以使用例如(空字符串转换为-1):

UPDATE table SET data2 = CASE WHEN data1 = '' THEN -1 ELSE cast(data1 AS int) END;

关于sql - 如果列在 PostgreSQL 中同时包含 int 和 NULL 值,如何从文本转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4626346/

相关文章:

java - 在 Java 中使用异常继续 Postgres 事务

java - 正确的 Java 泛型类的类型转换(或任何其他方法)

java - 在 Java 中通过 UDP 发送 C++ 结构

mysql - 如何使用带有 MySQL 的 Haversine 公式测量距离?

java - SQL 条件语句

postgresql - 使用 plpgsql 将列 bytea 更改为各种版本的 Postgres 中的文本

postgresql - 转义制表符

C++11:从旧式枚举迁移到枚举类的正确方法是什么?

sql - 在不影响数据库的情况下测试存储过程

mysql - SQL 连接一列的多个条件