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

相关推荐
无敌最俊朗@1 天前
通过Ubuntu和i.MX 6ULL开发板实现网络共享
服务器·数据库·ubuntu
TDengine (老段)1 天前
TDengine 时序函数 DERIVATIVE 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
TDengine (老段)1 天前
TDengine 时序函数 STATEDURATION 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
凯子坚持 c1 天前
2025年大模型服务性能深度解析:从清华评测报告看蓝耘元生代MaaS平台的综合实力
大数据·数据库·人工智能
长安城没有风1 天前
从入门到精通【Redis】理解Redis事务
数据库·redis·缓存
小园子的小菜1 天前
MySQL 查询与更新语句执行过程深度解析:从原理到实践
数据库·mysql
J.Kuchiki1 天前
【PostgreSQL内核学习:哈希聚合(HashAgg)执行流程与函数调用关系分析】
学习·postgresql
老华带你飞1 天前
学生信息管理系统|基于Springboot的学生信息管理系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·学生信息管理系统
*长铗归来*1 天前
MySQL新学知识(一)
数据库·mysql
2401_884810741 天前
Mysql主从复制
数据库·mysql