MySQL可直接使用的查詢表的列信息(實(shí)現(xiàn)方案)
背景
最近產(chǎn)品找來,想讓幫忙出下表的信息,字段駝峰展示,每張表信息show create table全部展示,再逐個(gè)粘貼,有點(diǎn)太耗費(fèi)時(shí)間,本篇記錄快速方法,方便備查。
實(shí)現(xiàn)方案
第一步、確定下劃線【_】的位置,可使用LOCATE函數(shù);
第二步、找到下劃線后第一個(gè)字符;
第三步、各個(gè)區(qū)域截取【下劃線前的字符+下劃線后的第一位要大寫+剩余字符串小寫】,使用CONCAT拼接。
實(shí)現(xiàn)效果如下所示。
模板SQL
可直接使用的模板SQL,只需要將【tb_order】改成所要統(tǒng)計(jì)的表即可,如下所示
SELECT COLUMN_NAME AS `數(shù)據(jù)元素`, LOCATE('_', COLUMN_NAME, 1) + 1 AS `下劃線第一個(gè)位置`, UCASE(SUBSTRING(COLUMN_NAME, LOCATE('_', COLUMN_NAME, 1) + 1, 1)) AS `下劃線第一個(gè)位置的字母`, 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 `數(shù)據(jù)類型`, CASE WHEN IS_NULLABLE = 'YES' THEN '必填' ELSE '非必填' END AS `是否必填`, column_comment AS `描述` FROM information_schema.COLUMNS WHERE TABLE_NAME = 'tb_order';
如何查詢列
可從MySQL的系統(tǒng)表information_schema.COLUMNS,直接查詢目標(biāo)表的信息,主要如下所示。
SELECT COLUMN_NAME AS `數(shù)據(jù)元素`, data_type AS `數(shù)據(jù)類型`, CASE WHEN IS_NULLABLE = 'YES' THEN '必填' ELSE '非必填' END AS `是否必填`, column_comment AS `描述` FROM information_schema.COLUMNS WHERE TABLE_NAME = 'tb_order';
執(zhí)行SQL,控制臺如下所示。
如何轉(zhuǎn)大寫
MySQL中字符轉(zhuǎn)大寫,可使用 UCASE函數(shù),字符轉(zhuǎn)小寫 可使用LOWER函數(shù)。
SELECT COLUMN_NAME AS `數(shù)據(jù)元素`, UCASE(data_type) AS `數(shù)據(jù)類型-大寫`, LOWER(data_type) AS `數(shù)據(jù)類型-小寫`, CASE WHEN IS_NULLABLE = 'YES' THEN '必填' ELSE '非必填' END AS `是否必填`, column_comment AS `描述` FROM information_schema.COLUMNS WHERE TABLE_NAME = 'tb_order';
執(zhí)行SQL,控制臺如下所示。
如何獲取字符位置
獲取字符串中指定字符位置,可使用LOCATE函數(shù)。
LOCATE(sub_str, str,length)
sub_str 表示待匹配的子串
str 表示匹配的目標(biāo)字符串
length 表示匹配的長度
SELECT COLUMN_NAME AS `數(shù)據(jù)元素`, LOCATE('_',COLUMN_NAME,1)+1 as `下劃線第一個(gè)位置`, UCASE(SUBSTRING(COLUMN_NAME,LOCATE('_',COLUMN_NAME,1)+1,1)) AS `下劃線第一個(gè)位置的字母`, data_type AS `數(shù)據(jù)類型`, CASE WHEN IS_NULLABLE = 'YES' THEN '必填' ELSE '非必填' END AS `是否必填`, column_comment AS `描述` FROM information_schema.COLUMNS WHERE TABLE_NAME = 'tb_order';
執(zhí)行SQL,控制臺如下所示。
如何拼接字段
使用CONCAT函數(shù)連接各部分子字符串。
SELECT COLUMN_NAME AS `數(shù)據(jù)元素`, LOCATE('_', COLUMN_NAME, 1) + 1 AS `下劃線第一個(gè)位置`, UCASE(SUBSTRING(COLUMN_NAME, LOCATE('_', COLUMN_NAME, 1) + 1, 1)) AS `下劃線第一個(gè)位置的字母`, 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 `數(shù)據(jù)類型`, CASE WHEN IS_NULLABLE = 'YES' THEN '必填' ELSE '非必填' END AS `是否必填`, column_comment AS `描述` FROM information_schema.COLUMNS WHERE TABLE_NAME = 'tb_order';
執(zhí)行SQL,控制臺如下所示。
以上即SQL方式統(tǒng)計(jì)列信息的實(shí)現(xiàn)方案。
SQL適用場景
1、最多兩個(gè)字符,通過下劃線作為連接符,對于多個(gè)下劃線的情況,case when 單獨(dú)處理
到此這篇關(guān)于MySQL可直接使用的查詢表的列信息(實(shí)現(xiàn)方案)的文章就介紹到這了,更多相關(guān)mysql查詢表的列信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決啟動MongoDB錯誤:error while loading shared libraries: libstdc+
本文提供了解啟動MongoDB時(shí)提示:error while loading shared libraries: libstdc++.so.6: cannot open shared object file: 錯誤的解決方案2018-10-10Mysql?COUNT()函數(shù)基本用法及應(yīng)用詳解
這篇文章主要介紹了Mysql?COUNT()函數(shù)基本用法及應(yīng)用的相關(guān)資料,COUNT()函數(shù)是SQL中常用的聚合函數(shù),用于統(tǒng)計(jì)滿足特定條件的記錄數(shù),它可以靈活地應(yīng)用于各種查詢場景,幫助用戶快速獲取所需的數(shù)據(jù)統(tǒng)計(jì)信息,需要的朋友可以參考下2024-12-12jdbc調(diào)用mysql存儲過程實(shí)現(xiàn)代碼
接下來將介紹下mysql存儲過程的創(chuàng)建及調(diào)用,調(diào)用時(shí)涉及到j(luò)dbc的知識,不熟悉的朋友還要溫習(xí)下jdbc哦,話不多說看代碼,希望可以幫助到你2013-03-03