Ich möchte den Datentyp mehrerer Spalten von float in int ändern. Wie lässt sich dies am einfachsten bewerkstelligen?
Noch gibt es keine Daten, über die man sich Sorgen machen müsste.
Ich möchte den Datentyp mehrerer Spalten von float in int ändern. Wie lässt sich dies am einfachsten bewerkstelligen?
Noch gibt es keine Daten, über die man sich Sorgen machen müsste.
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
ALTER TABLE tablename MODIFY columnname INTEGER;
Dadurch wird der Datentyp der angegebenen Spalte geändert
Je nachdem, wie viele Spalten Sie ändern möchten, ist es vielleicht am besten, ein Skript zu erstellen oder eine Art mysql-Client-GUI zu verwenden
Wenn Sie alle Spalten eines bestimmten Typs in einen anderen Typ ändern möchten, können Sie Abfragen wie die folgende erstellen:
select distinct concat('alter table ',
table_name,
' modify ',
column_name,
' <new datatype> ',
if(is_nullable = 'NO', ' NOT ', ''),
' NULL;')
from information_schema.columns
where table_schema = '<your database>'
and column_type = '<old datatype>';
Wenn Sie zum Beispiel die Spalten von tinyint(4)
a bit(1)
und führen Sie es so aus:
select distinct concat('alter table ',
table_name,
' modify ',
column_name,
' bit(1) ',
if(is_nullable = 'NO', ' NOT ', ''),
' NULL;')
from information_schema.columns
where table_schema = 'MyDatabase'
and column_type = 'tinyint(4)';
und erhalten eine Ausgabe wie diese:
alter table table1 modify finished bit(1) NOT NULL;
alter table table2 modify canItBeTrue bit(1) NOT NULL;
alter table table3 modify canBeNull bit(1) NULL;
!! Hält keine eindeutigen Beschränkungen ein, sollte aber leicht mit einer anderen Methode behoben werden können. if
-Parameter zu concat
. Ich überlasse es dem Leser, dies bei Bedarf umzusetzen.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.