当前位置: 首页 > news >正文

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

文章目录

  • 背景
  • 实现方案
  • 模板SQL
    • 如何查询列
    • 如何转大写
    • 如何获取字符位置
    • 如何拼接字段
  • SQL适用场景

背景

最近产品找来,想让帮忙出下表的信息,字段驼峰展示,每张表信息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 `下划线第一个位置的字母`,CASEWHENLOCATE('_', COLUMN_NAME, 1) != 0THENCONCAT(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_NAMEEND AS `驼峰展示`,data_type AS `数据类型`,CASEWHEN IS_NULLABLE = 'YES' THEN '必填'ELSE '非必填'END AS `是否必填`,column_comment AS `描述`
FROMinformation_schema.COLUMNS
WHERETABLE_NAME = 'tb_order';

如何查询列

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

SELECT COLUMN_NAME  AS `数据元素`,data_type AS `数据类型`,CASEWHEN IS_NULLABLE = 'YES' THEN '必填'ELSE '非必填'END AS `是否必填`,column_comment AS `描述`
FROMinformation_schema.COLUMNS
WHERETABLE_NAME = 'tb_order';

执行SQL,控制台如下所示。
在这里插入图片描述

如何转大写

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

SELECT COLUMN_NAME AS `数据元素`,UCASE(data_type) AS `数据类型-大写`,LOWER(data_type) AS `数据类型-小写`,CASEWHEN IS_NULLABLE = 'YES' THEN '必填'ELSE '非必填'END AS `是否必填`,column_comment AS `描述`
FROMinformation_schema.COLUMNS
WHERETABLE_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 `数据类型`,CASEWHEN IS_NULLABLE = 'YES' THEN '必填'ELSE '非必填'END AS `是否必填`,column_comment AS `描述`
FROMinformation_schema.COLUMNS
WHERETABLE_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 `下划线第一个位置的字母`,CASEWHENLOCATE('_', COLUMN_NAME, 1) != 0THENCONCAT(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_NAMEEND AS `驼峰展示`,data_type AS `数据类型`,CASEWHEN IS_NULLABLE = 'YES' THEN '必填'ELSE '非必填'END AS `是否必填`,column_comment AS `描述`
FROMinformation_schema.COLUMNS
WHERETABLE_NAME = 'tb_order';

执行SQL,控制台如下所示。
在这里插入图片描述
以上即SQL方式统计列信息的实现方案。

SQL适用场景

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

http://www.lryc.cn/news/525043.html

相关文章:

  • 在线宠物用品|基于vue的在线宠物用品交易网站(源码+数据库+文档)
  • 《安富莱嵌入式周报》第349期:VSCode正式支持Matlab调试,DIY录音室级麦克风,开源流体吊坠,物联网在军工领域的应用,Unicode字符压缩解压
  • 使用LabVIEW的History功能实现队列数据的读取而不清空
  • 电脑如何访问手机文件?
  • SpringBoot实现定时任务,使用自带的定时任务以及调度框架quartz的配置使用
  • java上传图片功能实现
  • 73,【5】BUUCTF WEB [网鼎杯 2020 玄武组]SSRFMe(未解出)
  • 【FreeRTOS 教程 一】任务结构体及其基础创建使用
  • 深入剖析 JVM 内存模型
  • 解决DeepSeek-R1模型在Cursor中使用报错的问题
  • ASP.NET Core 6.0 如何处理丢失的 Startup.cs 文件
  • Java如何向http/https接口发出请求
  • 数据分析 变异系数
  • 利用免费GIS工具箱实现高斯泼溅切片,将 PLY 格式转换为 3dtiles
  • 面试-二维数组
  • 如何使用 findIndex() 方法查找数组中的第一个匹配元素的索引?
  • 5. 马科维茨资产组合模型+政策意图AI金融智能体(Qwen-Max)增强方案(理论+Python实战)
  • Centos类型服务器等保测评整/etc/pam.d/system-auth
  • 从工厂到桌面:3D打印制造潮玩手办
  • Java高频面试之SE-16
  • 三分钟简单了解一些HTML的标签和语法_01
  • 缓存-Redis-数据结构-redis哪些数据结构是跳表实现的?
  • Linux 系统错误处理简介
  • 逐笔成交逐笔委托Level2高频数据下载和分析:20250122
  • 第18个项目:微信开发入门:获取access_token的Python源码
  • 如何将自己本地项目开源到github上?
  • Windows远程连接Docker服务
  • 在Qt中实现点击一个界面上的按钮弹窗到另一个界面
  • 嵌入式知识点总结 ARM体系与架构 专题提升(一)-硬件基础
  • 全氟醚橡胶发展前景:高性能密封材料的璀璨之星