如何获取每个MySQL数据库名称的长度?

时间:2016-04-10 17:03:19

标签: java mysql output maxlength

我正在尝试使用java模仿show databases;的输出。我想输出与此完全或非常相似的东西:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+

我的第一个想法是在开始打印输出之前弄清楚所有数据库名称的最大长度。但是,我不确定如何做到这一点。

我尝试select max(length(show databases));,这是无效的语法。我确实发现我可以use所有表并运行select length(database());来查找名称的长度,但我相信这不是mysql输出结果的方式。

是否有其他方法可以打印输出?谢谢!

2 个答案:

答案 0 :(得分:2)

SHOW DATABASES是一个独立命令,不能像你一样用作参数。

使用此命令可以获得所需信息:

SELECT MAX(LENGTH(SCHEMA_NAME)) FROM information_schema.schemata;

另见MySQL Documentation

答案 1 :(得分:2)

您必须直接查询信息架构表。试试这个

mysql> SELECT DISTINCT(table_schema), length(table_schema) from 
information_schema.tables;

+--------------------+----------------------+
| table_schema       | length(table_schema) |
+--------------------+----------------------+
| information_schema |                   18 |
| json               |                    4 |
| mysql              |                    5 |
| performance_schema |                   18 |
| sys                |                    3 |
+--------------------+----------------------+
5 rows in set (0.00 sec)