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

PostgreSQL中如何选择全列并转换指定列类型且避免重复列

PostgreSQL 查询避免重复列的正确方法

你忽略了PostgreSQL中列排除语法的使用规则:EXCEPT 用于排除列时,必须搭配表限定的 .*,不能直接和单独的 * 一起使用。

正确写法(PostgreSQL 12+ 支持)

直接在表名(或别名)后使用 .* EXCEPT (列名) 来排除不需要的原始列,再加上转换后的列即可:

SELECT
  my_table.* EXCEPT (column1, column2),
  CAST(column1 AS varchar) AS column1,
  CAST(column2 AS varchar) AS column2
FROM
  my_table

注意给转换后的列加上别名(AS column1),确保结果集的列名和原表一致。

旧版本兼容方案(PostgreSQL 12 之前)

如果你的PostgreSQL版本不支持列排除语法,可以通过信息模式动态生成查询语句:

-- 生成查询SQL
SELECT string_agg(
  CASE 
    WHEN column_name IN ('column1', 'column2') 
    THEN 'CAST(' || quote_ident(column_name) || ' AS varchar) AS ' || quote_ident(column_name)
    ELSE quote_ident(column_name)
  END, ', '
)
FROM information_schema.columns
WHERE table_name = 'my_table'
  AND table_schema = 'public'; -- 替换为你的表所在schema

执行这条语句会得到拼接好的完整查询SQL,复制后直接执行即可。

内容的提问来源于stack exchange,提问作者Shadow Walker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:36:32