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

How can I get the length of the name of each MySQL database?

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

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

我的第一个想法是在开始打印输出之前找出所有数据库名称的最大长度。但是,我不确定该怎么做。

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

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

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

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

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

另见 MySQL Documentation

您必须直接查询信息模式table。试试这个

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)