4

我试图返回表名而不使用“从数据库名称显示表”或“从信息架构表中选择表名称”查询原因:

  1. 我不能使用“从数据库名称显示表”查询,因为它返回一组具有固定字段名称“Tables_database_name”的表名称,当数据库名称太长时,这在我的代码中是不可接受的 - 我正在使用 DBExpress Delphi 和列名不能超过 31 个字符-。

  2. 我不能使用“从 information_schema.tables 中选择表名”查询,因为旧 MySQL 不支持它我认为早于 5.1

如果有人知道,请提供帮助:

  • 如何更改“show tables from database_name”生成的固定列名。

或者

  • 返回特定数据库中表名的任何其他查询。
4

1 回答 1

0

如何更改“show tables from database_name”生成的固定列名。

似乎 SHOW TABLES 是一个具有固定语法的单独语句:

SHOW [FULL] TABLES [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]

http://dev.mysql.com/doc/refman/5.0/en/show-tables.html

它不是一个 SELECT 所以你不能用它 UNION 或以任何形式处理它(更改列名)所以我猜这个问题的答案是:这是不可能的。

返回特定数据库中表名的任何其他查询。

如果你比较这个: http ://dev.mysql.com/doc/refman/4.1/en/show-tables.html

对此: http ://dev.mysql.com/doc/refman/5.0/en/show-tables.html

似乎在 5.0 之前的 SHOW TABLES 的唯一替代方案是“mysqlshow”shell 命令

information_schema 是在 MySql 5.0 中引入的,8 年前就已经稳定了。所以我猜你正试图让你的软件与非常旧的版本兼容。


当列名超过 31 个字符时,这个“DBExpress”会做什么?它会截断它还是失败?也许您应该提出一个标记为“delphi”和“DBExpress”的问题,并询问如何绕过这个限制?

于 2013-05-13T10:52:05.190 回答