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 数据类型和建库策略

    无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用数据类型有充分的认识。
    2008-12-12
  • Mysql中xtrabackup备份的实现

    Mysql中xtrabackup备份的实现

    Xtrabackup是Percona团队开发的用于MySQL数据库物理热备份的开源备份工具,本文就来介绍一下Mysql中xtrabackup备份的实现,就有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • MySQL中的数据加密解密安全技术教程

    MySQL中的数据加密解密安全技术教程

    在数据库应用程序中,数据的安全性是至关重要的,MySQL作为一种常用的关系型数据库管理系统,也提供了一些数据加密和解密的技巧来保护敏感数据的安全性,为了保护敏感数据免受未经授权的访问,我们可以使用加密和解密技术
    2024-01-01
  • MySQL8.0.11安装总结教程图解

    MySQL8.0.11安装总结教程图解

    本文通过图文并茂的形式给大家介绍了MySQL8.0.11安装总结,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2018-05-05
  • MYSQL设置字段自动获取当前时间的sql语句

    MYSQL设置字段自动获取当前时间的sql语句

    整理数据库数据,看到好多表都有加create_time和 update_time字段,来记录数据插入的时间和更新时间,但是时间插入是通过代码来维护的,这篇文章主要介绍了MYSQL设置字段自动获取当前时间,需要的朋友可以参考下
    2023-07-07
  • MySQL无法读表错误的解决方法(MySQL 1018 error)

    MySQL无法读表错误的解决方法(MySQL 1018 error)

    这篇文章主要为大家详细介绍了MySQL无法读表错误的解决方法,MySQL 1018 error如何解决?具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 一篇文章带你了解SQL之CASE WHEN用法详解

    一篇文章带你了解SQL之CASE WHEN用法详解

    本文介绍下,在mysql数据库中,有关case when语句的用法,介绍了case when语句的基础知识,并提供了相关实例,供大家学习参考,有需要的朋友不要错过
    2021-08-08
  • Mysql如何优化查询速度

    Mysql如何优化查询速度

    这篇文章主要介绍了Mysql如何优化查询速度问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 快速解决mysql导数据时,格式不对、导入慢、丢数据的问题

    快速解决mysql导数据时,格式不对、导入慢、丢数据的问题

    这篇文章主要介绍了快速解决mysql导数据时,格式不对、导入慢、丢数据的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • MySQL如何基于Explain关键字优化索引功能

    MySQL如何基于Explain关键字优化索引功能

    这篇文章主要介绍了MySQL如何基于Explain关键字优化索引功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10

最新评论