You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL中将text类型列转为array且仅转换非空值?

解决PostgreSQL中仅将非空值转为数组的列类型修改问题

你需要在USING子句中加入条件判断,仅当country列的值非空时才将其转为数组,空值则直接保留null而非生成包含null元素的数组。

修改后的SQL语句如下:

ALTER TABLE my_table
ALTER COLUMN country TYPE TEXT[]
USING CASE WHEN country IS NOT NULL THEN ARRAY[country] ELSE NULL END;

原理说明

原语句中ARRAY[country]会对所有值生效:当country为null时,会生成包含单个null元素的数组{null};通过CASE条件判断,我们只对非空值执行数组转换,空值则保持原有的null状态,完全符合你想要的最终表结构。

转换后的表结构将变为:
| id | country | type |
| 1 | {USA} | FOO |
| 2 | null | BAR |

内容的提问来源于stack exchange,提问作者Vitali Plagov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 09:55:17