mysql 从信息模式中选择表行和列名

cczfrluj  于 2022-11-28  发布在  Mysql
关注(0)|答案(1)|浏览(187)

我被要求创建一个PROCEDURE,其中列出了数据库中的表名、表行、列名和数据类型。
问题是,我只能使用INFORMATION_SCHEMA.COLUMNS来选择column_name,而可以使用INFORMATION_SCHEMA. table来选择table_rows。我尝试联接这两者,但没有成功。
另外,我需要过滤CHARACTER_MAXIMUM_LENGTH〉5的VARCHAR列,但是如果我选择“WHERE CHARACTER_MAXIMUM_LENGTH〉5”,它将不仅得到varchar,还得到字符数据类型。
这是我目前掌握的情况

SELECT c.table_name,  c.column_name, c.data_type, t.table_rows, CHARACTER_MAXIMUM_LENGTH
   FROM information_schema.columns c
   JOIN information_schema.tables t ON c.table_name = t.table_name
   WHERE t.table_schema = 'SAMPLE' AND CHARACTER_MAXIMUM_LENGTH > 5;

我想我得到了正确的连接来工作,但是我仍然不知道如何让“CHARACTER_MAXIMUN_LENGHT〉5”只过滤varchar数据类型...
有什么想法吗?

ljsrvy3e

ljsrvy3e1#

从条件中排除除varchar之外的所有数据类型:

AND (CHARACTER_MAXIMUM_LENGTH > 5 OR DATA_TYPE <> 'varchar')

相关问题