我需要在MySQL 4.1数据库中找到所有smallint(特别是smallint(5))列。似乎INFORMATION_SCHEMA仅在MySQL 5+中可用。还有其他选择吗?
由于
答案 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获取所需的信息会有所帮助