PostgreSQL如何生成含指定数值的虚拟列?无需建表或批量插入
PostgreSQL生成含指定数值虚拟列的简便方法
核心解决方案
不用逐值加括号的VALUES语法、无需临时表或Excel导入,直接通过字符串转多行的方式生成虚拟列:
方法1:
string_to_array+unnest组合
把所有需要的数值用逗号拼接成字符串,转成数组后拆分为单独行,适合批量复制粘贴大量数值:SELECT unnest(string_to_array('231,356,459,782,1001,1234,5678', ','))::integer AS companyid;说明:
::integer用于将文本类型的数值转为整数,可按需调整为::bigint等类型;如果数值格式特殊,可灵活修改字符串分隔符。方法2:
regexp_split_to_table直接拆分
效果和方法1一致,语法更简洁:SELECT regexp_split_to_table('231,356,459,782,1001', ',')::integer AS companyid;
你之前尝试的问题原因
SELECT (231,356,...) AS companyid这种写法生成的是单行的记录类型(record),结果是一行包含所有值的列,而非每行一个数值的虚拟列,因此不符合预期。
内容的提问来源于stack exchange,提问作者santee
相关产品推荐
相关产品推荐

