在MySQL 4.1中选择特定类型的列

时间:2009-12-18 16:24:54

标签: mysql

我需要在MySQL 4.1数据库中找到所有smallint(特别是smallint(5))列。似乎INFORMATION_SCHEMA仅在MySQL 5+中可用。还有其他选择吗?

由于

4 个答案:

答案 0 :(得分:13)

这是适合您的事情:

select distinct table_name, column_name, column_type
  from information_schema.columns
  where table_schema = 'THE_DB_YOU_WANT_TO_QUERY' 
    and column_type = 'smallint(5)';

显然,将'THE_DB_YOU_WANT_TO_QUERY'替换为数据库的实际名称。我需要一段时间才能完成所有这些工作,但它应该对你有用。

答案 1 :(得分:1)

使用SHOW COLUMNS语法返回所需的数据。

答案 2 :(得分:0)

我认为它应该有效 SHOW TABLES; # Get list of all tables
DESC [EACH TABLE]; # and then check "Type" column

答案 3 :(得分:0)

如果您使用的是PHP,则可以使用以下函数获取有关表中特定字段的信息。

mysql_field_type
mysql_fetch_field
mysql_field_len
mysql_field_flags

mysql_fetch_field为您提供最多信息。

为您举例说明如何使用它:

$SQLquery = 'SELECT * FROM '.$tableName;
$arr;
$field_array = array();
$res = mysql_query($SQLquery);

$numOfCols = mysql_num_fields($res);

for($y=0;$y<=($numOfCols-1);$y++)
{
    $fieldName1 =  mysql_field_name($res, $y);
    $field = mysql_fetch_field($res, $y);
    if($field->max_length < 6 && $field->numeric = true)
    {
      $field_array[] = $fieldName1;
    }
}

我意识到这不是MySql的答案,但我希望如果没有办法通过4.1中的MySql获取所需的信息会有所帮助