1

phpMyAdminに似たカスタムスクリプトを作成しています。

*列をまだ知らずにテーブル内のすべてのデータを選択するには、アスタリスク()を使用する必要があります。秘訣は、効率を上げるために、各列から取得するデータの量を制限する必要があることです。基本的にこれを行います、

SELECT SUBSTR(Username, 20) FROM Users LIMIT 10

これにより、[ユーザー名]列が20文字に制限されますが、このようにすべてを同時に実行する必要があります

SELECT SUBSTR(*, 20) FROM Users LIMIT 10

アスタリスクを使用しながら、各列で特定の文字数制限のあるすべてのデータを選択するにはどうすればよいですか?

4

4 に答える 4

2

もう 1 つの方法は、動的 SQL を作成することです。必要なのは

  • データベース名
  • テーブル名

クエリは次のとおりです。

SET @db = 'db_2_a8d87';   -- database name
SET @tb = 'Table1';       -- table name
SET @sql = NULL;
SELECT GROUP_CONCAT(CONCAT('SUBSTRING(',column_Name,',1,3)', column_Name)) INTO @sql
FROM   information_schema.columns
WHERE  table_schema = @db AND table_name = @tb;

SET @sql = CONCAT('SELECT ', @sql, ' FROM ', @tb);

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
于 2012-12-28T06:18:01.713 に答える
2

取得するすべての列を指定する必要があります。

SELECT SUBSTR(Username,20) as user, SUBSTR(Column2,20) as col, FROM Users LIMIT 10

mysql 関数でアスタリスクを思い通りに使用することはできません。各列を制限する必要があります。

于 2012-12-28T06:06:32.307 に答える
2

SELECT SUBSTR(COL1,20), SUBSTR(COL2,20),SUBSTR(COL3,20), .... FROM Users LIMIT 10

各列を明示的に制限する必要があります..

于 2012-12-28T06:08:24.040 に答える
1

別の方法として、これを 2 つの部分に分けて行うこともできます。最初の部分では、次を実行します。

SHOW COLUMNS IN Users;

次に、そのクエリの Field 列の結果を使用して、最初のクエリで返された各列名を選択する 2 番目のクエリをプログラムで生成します。

于 2012-12-28T06:11:53.780 に答える