10

我需要编写一些仅适用于我们数据库中某些字段的代码。具体来说,我正在寻找单个数据库的所有表中 DECIMAL(12,5) 类型的任何字段;

如果有任何帮助,我们所有的十进制字段都以 dec_ 为前缀。我可以从所有表中收集所有十进制字段,但是其中有很多不符合我的特定标准,我只需要限制为 12,5 的十进制值。

在纯 SQL 或使用 PHP 之间,我没有偏好。我们目前正在使用 CakePHP 框架来管理我们的项目,尽管我可以在不使用框架的情况下轻松地做到这一点。这是收集所需数据的一次性操作,因此我可以继续进行审计。

非常感谢任何帮助,感谢您花时间阅读本文。

[编辑]在这里得到了一些很好的答案,谢谢大家!我可能应该在我最初的帖子中提到这一点,但是有什么方法可以让我也获得与每个字段关联的表名?

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 回答