MySQL可直接使用的查询表的列信息

文章目录

背景

最近产品找来,想让帮忙出下表的信息,字段驼峰展示,每张表信息show create table全部展示,再逐个粘贴,有点太耗费时间,本篇记录快速方法,方便备查。

实现方案

第一步、确定下划线【_】的位置,可使用LOCATE函数;

第二步、找到下划线后第一个字符;

第三步、各个区域截取【下划线前的字符+下划线后的第一位要大写+剩余字符串小写】,使用CONCAT拼接。

实现效果如下所示。

如何查询列

可从MySQL的系统表information_schema.COLUMNS,直接查询目标表的信息,主要如下所示。

sql 复制代码
SELECT 
    COLUMN_NAME  AS `数据元素`,
    data_type AS `数据类型`,
    CASE
        WHEN IS_NULLABLE = 'YES' THEN '必填'
        ELSE '非必填'
    END AS `是否必填`,
    column_comment AS `描述`
FROM
    information_schema.COLUMNS
WHERE
    TABLE_NAME = 'tb_order';

执行SQL,控制台如下所示。

如何转大写

MySQL中字符转大写,可使用 UCASE函数,字符转小写 可使用LOWER函数。

sql 复制代码
SELECT 
    COLUMN_NAME AS `数据元素`,
    UCASE(data_type) AS `数据类型-大写`,
		LOWER(data_type) AS `数据类型-小写`,
    CASE
        WHEN IS_NULLABLE = 'YES' THEN '必填'
        ELSE '非必填'
    END AS `是否必填`,
    column_comment AS `描述`
FROM
    information_schema.COLUMNS
WHERE
    TABLE_NAME = 'tb_order';

执行SQL,控制台如下所示。

如何获取字符位置

获取字符串中指定字符位置,可使用LOCATE函数。

LOCATE(sub_str, str,length)

sub_str 表示待匹配的子串

str 表示匹配的目标字符串

length 表示匹配的长度

sql 复制代码
SELECT 
		COLUMN_NAME AS `数据元素`,
		LOCATE('_',COLUMN_NAME,1)+1 as `下划线第一个位置`,
    UCASE(SUBSTRING(COLUMN_NAME,LOCATE('_',COLUMN_NAME,1)+1,1)) AS `下划线第一个位置的字母`,
    data_type AS `数据类型`,
    CASE
        WHEN IS_NULLABLE = 'YES' THEN '必填'
        ELSE '非必填'
    END AS `是否必填`,
    column_comment AS `描述`
FROM
    information_schema.COLUMNS
WHERE
    TABLE_NAME = 'tb_order';

执行SQL,控制台如下所示。

如何拼接字段

使用CONCAT函数连接各部分子字符串。

sql 复制代码
SELECT 
    COLUMN_NAME AS `数据元素`,
    LOCATE('_', COLUMN_NAME, 1) + 1 AS `下划线第一个位置`,
    UCASE(SUBSTRING(COLUMN_NAME,
                LOCATE('_', COLUMN_NAME, 1) + 1,
                1)) AS `下划线第一个位置的字母`,
    CASE
        WHEN
            LOCATE('_', COLUMN_NAME, 1) != 0
        THEN
            CONCAT(LOWER(SUBSTRING(COLUMN_NAME,
                                1,
                                LOCATE('_', COLUMN_NAME, 1) - 1)),
                    UCASE(SUBSTRING(COLUMN_NAME,
                                LOCATE('_', COLUMN_NAME, 1) + 1,
                                1)),
                    LOWER(SUBSTRING(COLUMN_NAME,
                                LOCATE('_', COLUMN_NAME, 1) + 2,
                                LENGTH(COLUMN_NAME))))
        ELSE COLUMN_NAME
    END AS `驼峰展示`,
    data_type AS `数据类型`,
    CASE
        WHEN IS_NULLABLE = 'YES' THEN '必填'
        ELSE '非必填'
    END AS `是否必填`,
    column_comment AS `描述`
FROM
    information_schema.COLUMNS
WHERE
    TABLE_NAME = 'tb_order';

执行SQL,控制台如下所示。

相关推荐
无名之逆14 分钟前
[特殊字符] Hyperlane 框架:高性能、灵活、易用的 Rust 微服务解决方案
运维·服务器·开发语言·数据库·后端·微服务·rust
爱的叹息33 分钟前
MongoDB 的详细解析,涵盖其核心概念、架构、功能、操作及应用场景
数据库·mongodb·架构
爱的叹息1 小时前
华为高斯(GaussDB)数据库中 Range、List、Hash三种分区方式 的完整SQL示例及增删改查操作,并附上总结对比表格
数据库·哈希算法·gaussdb
kfepiza3 小时前
Debian用二进制包安装mysql8.0.41 笔记250401
数据库·笔记·mysql·debian·database
在努力的韩小豪3 小时前
B树和B+树的区别(B Tree & B+ Tree)
数据结构·数据库·b树·b+树·索引·数据库索引
Watink Cpper3 小时前
[MySQL初阶]MySQL(8)索引机制:下
android·数据库·b树·mysql·b+树·myisam·innodedb
苹果酱05673 小时前
SpringCloud第二篇:注册中心Eureka
java·vue.js·spring boot·mysql·课程设计
freejackman3 小时前
MySQL 基础入门
数据库·后端·sql·mysql
二年级程序员4 小时前
SQL语句(一)—— DDL
数据库·sql·mysql
邴越4 小时前
不同向量数据库(FAISS / Pinecone / Weaviate)在 RAG 中的优缺点
数据库·faiss