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

相关推荐
jiayou641 天前
KingbaseES 表级与列级加密完全指南
数据库·后端
GBASE2 天前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
xiezhr2 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
唐青枫3 天前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
吃糖的小孩3 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
小满8783 天前
5.Mysql事务隔离级别与锁机制
mysql
笃行3504 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3504 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行3504 天前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库
元Y亨H4 天前
技术笔记:MySQL 字符集排序规则与大小写敏感性问题解决方案
mysql