我试图返回表名而不使用“来自database_name的show tables”或“select table_name from information_schema.tables”查询原因:
我不能使用“显示来自database_name的表”查询,因为它返回一组具有固定字段名称“Tables_database_name”的表名,当数据库名称太长时,我的代码中这是不可接受的 - 我在Delphi上使用DBExpress,列名不能超过31个字符 - 。
我不能使用“select table_name from information_schema.tables”查询,因为旧的MySQL不支持我认为早于5.1
如果有任何人知道,请提供帮助:
或
答案 0 :(得分: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
似乎只有替代SHOW TABLES之前的5.0是“mysqlshow”shell命令
information_schema是在MySql 5.0中引入的,8年前它已经稳定了。所以我想你是想让你的软件与旧版本兼容。
当列名超过31个字符时,这个“DBExpress”会做什么?是截断还是失败?也许你应该说出一个标记为“delphi”和“DBExpress”的问题并询问如何绕过这个限制?