MySQL可直接使用的查询表的列信息(实现方案)

 更新时间:2025年01月23日 10:16:30   作者:梦幻通灵  
本文介绍了如何使用SQL快速将下划线命名的表字段转换为驼峰命名格式,包括确定下划线位置、找到第一个字符、截取并拼接字符串等步骤,通过使用LOCATE、CONCAT、UCASE和LOWER等函数,可以实现高效的字段命名转换,感兴趣的朋友跟随小编一起看看吧

背景

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

实现方案

第一步、确定下划线【_】的位置,可使用LOCATE函数;
第二步、找到下划线后第一个字符;
第三步、各个区域截取【下划线前的字符+下划线后的第一位要大写+剩余字符串小写】,使用CONCAT拼接。
实现效果如下所示。

模板SQL

可直接使用的模板SQL,只需要将【tb_order】改成所要统计的表即可,如下所示

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';

如何查询列

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

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函数。

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 表示匹配的长度

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函数连接各部分子字符串。

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,控制台如下所示。

以上即SQL方式统计列信息的实现方案。

SQL适用场景

1、最多两个字符,通过下划线作为连接符,对于多个下划线的情况,case when 单独处理

到此这篇关于MySQL可直接使用的查询表的列信息(实现方案)的文章就介绍到这了,更多相关mysql查询表的列信息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL中创建表的三种方法汇总

    MySQL中创建表的三种方法汇总

    这篇文章主要介绍了MySQL中创建表的三种方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 解决启动MongoDB错误:error while loading shared libraries: libstdc++.so.6:cannot open shared object file:

    解决启动MongoDB错误:error while loading shared libraries: libstdc+

    本文提供了解启动MongoDB时提示:error while loading shared libraries: libstdc++.so.6: cannot open shared object file: 错误的解决方案
    2018-10-10
  • MySQL CPU过高的排查方法

    MySQL CPU过高的排查方法

    这篇文章主要介绍了MySQL CPU过高的排查方法,通过top命令查看服务器CPU资源使用情况,明确CPU占用率较高的是否是mysqld进程,文章通过图文介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Mysql COUNT()函数基本用法及应用详解

    Mysql COUNT()函数基本用法及应用详解

    这篇文章主要介绍了Mysql COUNT()函数基本用法及应用的相关资料,COUNT()函数是SQL中常用的聚合函数,用于统计满足特定条件的记录数,它可以灵活地应用于各种查询场景,帮助用户快速获取所需的数据统计信息,需要的朋友可以参考下
    2024-12-12
  • MySQL系列之八 MySQL服务器变量

    MySQL系列之八 MySQL服务器变量

    其中有些参数支持运行时修改,会立即生效;有些参数不支持,且只能通过修改配置文件,并重启服务器程序生效;有些参数作用域是全局的,且不可改变;有些可以为每个用户提供单独(会话)的设置
    2021-07-07
  • MySQL系列之四 SQL语法

    MySQL系列之四 SQL语法

    SQL是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,这篇文章主要给大家介绍了SQL语法的相关资料,需要的朋友可以参考下
    2021-07-07
  • mysql重复索引与冗余索引实例分析

    mysql重复索引与冗余索引实例分析

    这篇文章主要介绍了mysql重复索引与冗余索引,简单说明了重复索引与冗余索引的概念、应用场景并结合实例形式分析了mysql重复索引与冗余索引相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • MySQL是如何实现主备同步

    MySQL是如何实现主备同步

    这篇文章主要介绍了MySQL是如何实现主备同步的,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-12-12
  • CentOS7.6安装MYSQL8.0的步骤详解

    CentOS7.6安装MYSQL8.0的步骤详解

    这篇文章主要介绍了CentOS7.6安装MYSQL8.0的步骤,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • jdbc调用mysql存储过程实现代码

    jdbc调用mysql存储过程实现代码

    接下来将介绍下mysql存储过程的创建及调用,调用时涉及到jdbc的知识,不熟悉的朋友还要温习下jdbc哦,话不多说看代码,希望可以帮助到你
    2013-03-03

最新评论