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

如何为prescriptions表所有列统一添加prescription_前缀别名?

嘿,手动给每一列加别名确实太繁琐了!我之前处理过类似的需求,给你分享几个不同数据库下的高效解决方案,不用一个个敲:

方案思路核心

利用数据库的系统元数据表(存储表结构信息的内置表),动态拼接出带前缀的别名语句,直接生成可以复用的完整SQL。


MySQL/MariaDB 实现

直接运行下面的查询,会生成完整的带前缀别名的SELECT语句:

SELECT CONCAT(
  'SELECT ',
  GROUP_CONCAT(
    CONCAT('`', column_name, '` AS `prescription_', column_name, '`')
    SEPARATOR ', '
  ),
  ' FROM prescriptions;'
) AS full_query
FROM information_schema.columns
WHERE table_schema = DATABASE() -- 自动取当前连接的数据库
  AND table_name = 'prescriptions';
  • 运行后,full_query字段就是你需要的完整SQL,复制出来直接执行就行
  • 如果只是需要列别名的部分,去掉外层的CONCAT,只保留GROUP_CONCAT的结果即可

PostgreSQL 实现

PostgreSQL可以用string_agg和quote_ident(处理特殊列名)来生成:

SELECT CONCAT(
  'SELECT ',
  string_agg(
    quote_ident(column_name) || ' AS ' || quote_ident('prescription_' || column_name),
    ', '
  ),
  ' FROM prescriptions;'
) AS full_query
FROM information_schema.columns
WHERE table_schema = 'public' -- 替换成你的表所在schema,默认是public
  AND table_name = 'prescriptions';

SQL Server 实现

用sys.columns系统表来生成:

SELECT CONCAT(
  'SELECT ',
  STRING_AGG(
    QUOTENAME(name) + ' AS ' + QUOTENAME('prescription_' + name),
    ', '
  ),
  ' FROM prescriptions;'
) AS full_query
FROM sys.columns
WHERE object_id = OBJECT_ID('prescriptions');

额外提示

  • 如果后续表结构有变动(新增/删除列),重新运行对应的查询就能生成最新的SQL,不用手动修改
  • 要是你的列名包含特殊字符(比如空格、关键字),上面的方案里的quote_ident/QUOTENAME/反引号会自动处理,避免语法错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:57:41