PostgreSQL 与 MySQL 获取字段注释并转换为驼峰命名教程

🚀 PostgreSQL 与 MySQL 获取字段注释并转换为驼峰命名教程

✅ 适用场景

  • 自动生成前端接口字段
  • Java Bean、DTO、实体类字段自动转化
  • 自动文档或注释生成

📌 表名(虚拟示例)

我们假设有如下表结构:

sql 复制代码
CREATE TABLE user_info (
    user_id     INT COMMENT '用户ID',
    user_name   VARCHAR(50) COMMENT '用户名',
    phone_num   VARCHAR(20) COMMENT '手机号'
);

🐘 PostgreSQL 实现

🔍 1. 查询字段名、注释,并转为 camelCase

sql 复制代码
WITH field_info AS (
    SELECT
        a.attname AS column_name,
        col_description(a.attrelid, a.attnum) AS comment
    FROM
        pg_attribute a
    WHERE
        a.attrelid = 'user_info'::regclass
        AND a.attnum > 0
        AND NOT a.attisdropped
),
camel_case AS (
    SELECT
        column_name,
        comment,
        regexp_replace(initcap(replace(column_name, '_', ' ')), ' ', '', 'g') AS pascal_case
    FROM field_info
)
SELECT
    column_name,
    comment,
    lower(left(pascal_case, 1)) || substring(pascal_case from 2) AS camel_case_name
FROM camel_case;

🧪 示例输出

column_name comment camel_case_name
user_id 用户ID userId
user_name 用户名 userName
phone_num 手机号 phoneNum

🐬 MySQL 实现

🔍 1. 查询字段名、注释,并转为 camelCase

sql 复制代码
SELECT
    COLUMN_NAME AS column_name,
    COLUMN_COMMENT AS comment,
    -- 转为 PascalCase(UserName)
    REPLACE(
        CONCAT_WS('',
            UPPER(LEFT(COLUMN_NAME, 1)),
            SUBSTRING(
                REPLACE(
                    CONCAT_WS('',
                        UPPER(SUBSTRING_INDEX(COLUMN_NAME, '_', -1)),
                        SUBSTRING(COLUMN_NAME FROM LOCATE('_', COLUMN_NAME) + 1)
                    ),
                    '_',
                    ''
                ),
                2
            )
        ),
        '_',
        ''
    ) AS pascal_case,
    -- 再转为 camelCase(userName)
    CONCAT(
        LOWER(LEFT(
            REPLACE(
                CONCAT_WS('',
                    UPPER(LEFT(COLUMN_NAME, 1)),
                    SUBSTRING(
                        REPLACE(
                            CONCAT_WS('',
                                UPPER(SUBSTRING_INDEX(COLUMN_NAME, '_', -1)),
                                SUBSTRING(COLUMN_NAME FROM LOCATE('_', COLUMN_NAME) + 1)
                            ),
                            '_',
                            ''
                        ),
                        2
                    )
                ),
                '_',
                ''
            ), 1
        )),
        SUBSTRING(
            REPLACE(
                CONCAT_WS('',
                    UPPER(LEFT(COLUMN_NAME, 1)),
                    SUBSTRING(
                        REPLACE(
                            CONCAT_WS('',
                                UPPER(SUBSTRING_INDEX(COLUMN_NAME, '_', -1)),
                                SUBSTRING(COLUMN_NAME FROM LOCATE('_', COLUMN_NAME) + 1)
                            ),
                            '_',
                            ''
                        ),
                        2
                    )
                ),
                '_',
                ''
            ),
            2
        )
    ) AS camel_case_name
FROM
    information_schema.COLUMNS
WHERE
    TABLE_SCHEMA = 'your_database'     -- 替换为你的数据库名
    AND TABLE_NAME = 'user_info';      -- 替换为你的表名

推荐替代方案(更简洁): 用程序语言(如 Python、JavaScript)对字段名字符串做驼峰转换。


🧪 示例输出

column_name comment camel_case_name
user_id 用户ID userId
user_name 用户名 userName
phone_num 手机号 phoneNum

📦 衍生应用场景

需求 可使用
前端接口字段转换
Java 实体类字段构建
Python 数据类生成
自动化文档生成(Swagger)

📚 小结对比

功能项 PostgreSQL MySQL
获取字段注释 col_description() + pg_attribute information_schema.COLUMNS
获取字段名 a.attname COLUMN_NAME
表名引用 '表名'::regclass TABLE_NAME = '表名'
驼峰转换 regexp_replace + initcap 多层 REPLACE/CONCAT/UPPER/LOWER

相关推荐
q***33373 分钟前
给SQL server数据库表字段添加注释SQL,附修改、删除注释SQL及演示
数据库·sql·oracle
百***221214 分钟前
mysql 迁移达梦数据库出现的 sql 语法问题 以及迁移方案
数据库·sql·mysql
_Jimmy_16 分钟前
ShardingSphere-JDBC 实现两个mysql数据库的不同表的关联查询
数据库·mysql
weixin_3077791337 分钟前
基于AWS的应用程序可靠性提升架构优化方案——RDS多可用区与EC2弹性架构实践
数据库·数据仓库·架构·云计算·aws
Chan1641 分钟前
【 Java八股文面试 | Redis篇 缓存问题、持久化、分布式锁 】
java·数据库·redis·后端·spring·缓存·面试
G***T6911 小时前
PostgreSQL全文搜索教程,中文分词配置
数据库·postgresql·中文分词
星光一影1 小时前
陪诊陪检系统源码,陪诊小程序,陪诊APP,陪诊服务,家政上门系统,居家护理陪护源码
mysql·小程序·uni-app·php
必胜刻2 小时前
MySQL复盘总结
数据库·mysql·oracle
百***79462 小时前
MySQL数据库(SQL分类)
数据库·sql·mysql
weixin_307779132 小时前
Amazon VPC中Web应用无法连接数据库的安全组配置问题分析与修复
网络·数据库·安全·云计算·aws