我试图在不使用“从 database_name 显示表”或“从 information_schema.tables 中选择表名”的情况下返回表名查询其原因:

  • 我不能使用“show tables from database_name”查询,因为它返回一组带有固定字段名称“Tables_database_name”的表名,当数据库名称太长时,这在我的代码中是 Not Acceptable - 我正在使用 DBExpress在 Delphi 上,列名不能超过 31 个字符-。
  • 我不能使用“select table_name from information_schema.tables”查询,因为它不支持旧 MySQL 我认为比 5.1

  • 如果任何机构知道,请帮助:
  • 如何更改“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 所以你不能用它联合或以任何形式玩弄它(改变列名)所以我想这个问题的答案是:这是不可能的。



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

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

    似乎只有 SHOW TABLES 5.0 之前的替代方法是“mysqlshow”shell 命令

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

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

    关于MySQL:在不使用任何 "show tables from database_name"或 "select table_name from information_schema.tables"查询的情况下返回表名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16518412/

    10-13 06:48