4

「show tables from database_name」または「select table_name from information_schema.tables」クエリを使用せずにテーブル名を返そうとしていますが、その理由は次のとおりです。

  1. 「データベース名からテーブルを表示」クエリを使用できません。これは、固定フィールド名「Tables_database_name」を持つテーブル名の行セットを返すためです。データベース名が長すぎる場合、これは私のコードでは受け入れられません -DBExpress を使用していますDelphi と列名は 31 文字以内にする必要があります。

  2. 古い MySQL ではサポートされていないため、「select table_name from information_schema.tables」クエリを使用できません。5.1 より古いと思います。

体が知っている場合は助けてください:

  • 「データベース名からテーブルを表示」の結果の固定列名を変更する方法。

また

  • 特定のデータベース内のテーブル名を返すその他のクエリ。
4

1 に答える 1

0

「データベース名からテーブルを表示」の結果の固定列名を変更する方法。

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」シェルコマンドだったようです

information_schema は MySql 5.0 で導入され、8 年前に安定していました。ですから、ソフトウェアを非常に古いバージョンと互換性を持たせようとしていると思います。


列名が 31 文字を超える場合、この「DBExpress」は何をしますか? それは切り捨てられますか、それとも失敗しますか?「delphi」および「DBExpress」というタグが付けられた質問を述べて、この制限を回避する方法を尋ねる必要がありますか?

于 2013-05-13T10:52:05.190 に答える