MySQL检索数据类型== X的列名

时间:2011-08-24 15:31:13

标签: php mysql names sqldatatypes

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

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

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

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

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

3 个答案:

答案 0 :(得分:18)

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

答案 1 :(得分: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()) ;  
}

答案 2 :(得分:0)

试试这个

SELECT table_name, column_name
FROM information_schema.columns where data_type = 'INT'