10

データベース内の特定のフィールドにのみ適用されるコードを作成する必要があります。具体的には、単一のデータベースのすべてのテーブルで、DECIMAL(12,5)型のフィールドを探しています。

役立つ場合は、すべての10進フィールドの前にdec_が付きます。すべてのテーブルからすべての10進数フィールドを収集できましたが、特定の基準に一致しないフィールドがたくさんあります。必要なのは、制限が12.5の10進数値だけです。

純粋なSQLでこれを行うか、PHPを使用するかは好みではありません。現在、CakePHPフレームワークを使用してプロジェクトを管理していますが、フレームワークを使用しなくても同じように簡単に管理できます。これは、監査を続行できるように、必要なデータを収集するための1回限りの操作です。

どんな助けでも大歓迎です、これを読むために時間を割いてくれてありがとう。

[編集]ここでいくつかの素晴らしい答えを得ました、みんなありがとう!最初の投稿でこれについて言及する必要があったかもしれませんが、各フィールドに関連付けられたテーブル名を取得する方法はありますか?

4

3 に答える 3

19
SELECT
    TABLE_NAME,
    COLUMN_NAME
FROM
    INFORMATION_SCHEMA.COLUMNS
WHERE
    TABLE_SCHEMA = 'db-name' AND
    DATA_TYPE = 'decimal' AND
    NUMERIC_PRECISION = 12 AND
    NUMERIC_SCALE = 5
于 2011-08-24T15:35:47.903 に答える
2

次のアプローチを使用してみてください。

$pdo = new PDO(...);

$sql = "select column_name from 
    information_schema.columns 
    where table_schema='$your_db' and table_name='?' and  data_type = 'decimal(12,5)'";

foreach($pdo->query("SHOW TABLES;") as $table) {
    $prepared = $pdo->prepare($sql);
    $prepared->execute(array($table));
    print_R($prepared->fetchAll()) ;  
}
于 2011-08-24T15:46:06.877 に答える
0

これを試して

SELECT table_name, column_name
FROM information_schema.columns where data_type = 'INT'
于 2017-07-18T05:36:07.617 に答える