Mysql Mazimal verfügbare Zeichenlänge einer Spalte ermitteln

hans jörg

Erfahrenes Mitglied
Hi,

ich suche nach einer Möglichkeit bei einer Mysql Datenbank bei allen Feldern, egal welchen Typs, die maximal mögliche Zahl an Zeichen, die in diesem Feld gespeichert werden könne zu Ermitteln. zb. bei VARCHAR(50) => 50

danke
 
Danke für den Link,
ich bastle mir geraden mit den Infos eine Methode. Ich hatte nur gehofft, dass es da schon etwas fertiges gibt bevor ich mich selbst an die Arbeit mache :-) .
 
In der Metadata einer Tabelle die man Normalerweise abrufen kann kommt man da gut ran. Welche Sprache verwendest du denn um auf die Datenbank zuzugreifen?
 
Mit php. Die Informationen hol ich mir mit "Show Fields From Tabellenname" und verarbeite sie dann entsprechend. Habs für meinen Bedarf so gelöst:
PHP:
static function return_field_length($table = false, $field = false)
{
	if($table !== false && $field !== false)
	{
		$sql = 'Show Fields From '.self::escape($table).'';
		$type = '';
		$result = mysql_query($sql);
		while($row = mysql_fetch_object($result))
		{
			if($row->Field == $field){$type = $row->Type; break;}
		}
		if(strpos($type,'(') !== false)
		{
			$parts = explode("(", $type);
			$num = explode(")",$parts[1]);
			return = $num[0];
		}
		if(strpos($type,'tinytext') !== false)
		{
			return = 255;
		}
		if(strpos($type,'tinyblob') !== false)
		{
			return = 255;
		}
		if(strpos($type,'mediumtext') !== false)
		{
			return = 16777215;
		}
		if(strpos($type,'mediumblob') !== false)
		{
			return = 16777215;
		}
		if(strpos($type,'longtext') !== false)
		{
			return = 4294967295;
		}
		if(strpos($type,'longblob') !== false)
		{
			return = 4294967295;
		}
		if(strpos($type,'text') !== false)
		{
			return = 65535;
		}
		if(strpos($type,'blob') !== false)
		{
			return = 65535;
		}

	}
	return false;
}
 
Zuletzt bearbeitet:
Naja eigentlich schon - die maximal mögliche Anzahl an zu speichernden Zeichen. Die Funktion mysql_fetch_field hab ich mir natürlich angsehen - die Eigenschaft max_length gibt da allerdings die Zeichenlenge des längsten gespeicherten Datensatzes eines Feldes aus und nicht das was ich benötige.
Sollte ich da etwas übersehen habe bin ich für jeden hinweis natürlich dankbar.
 
Das was du in deinem ersten Post beschrieben hast war aber die konkret gesetzte maximal mögliche Zeichenlänge einer konkreten Spalte einer Tabelle.
 
Zurück