返回表名称,而不使用任何“show table from database_name”或“select table_name from information_schema.tables”查询

问题描述 投票:0回答:1

我试图返回表名称而不使用“show table from database_name”或“select table_name from information_schema.tables”查询其原因:

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

  2. 我无法使用“select table_name from information_schema.tables”查询,因为旧版 MySQL 不支持它,我认为 5.1 之前的版本

如果有人知道请帮忙:

  • 如何更改“显示数据库名称中的表”的结果固定列名称,或
  • 返回特定数据库内的表名称的任何其他查询。
sql mysql
1个回答
1
投票

如何更改“显示数据库名称中的表”结果的固定列名称。

看起来 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,所以你不能与它联合或以任何形式使用它(更改列名称),所以我想这个问题的答案是:这是不可能的。

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

如果你比较一下: 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”的问题并询问如何绕过此限制?

© www.soinside.com 2019 - 2024. All rights reserved.