684 Stimmen

Wie kann ich den Datentyp für eine Spalte in MySQL ändern?

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.

1253voto

Yannick Motton Punkte 32662

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

55voto

php Punkte 3957
alter table table_name modify column_name int(5)

46voto

Richard Punkte 4418

Sie können auch dies verwenden:

ALTER TABLE [tablename] CHANGE [columnName] [columnName] DECIMAL (10,2)

18voto

Tobb Punkte 11232

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.

12voto

Mahrukh Mehmood Punkte 208
Alter TABLE `tableName` MODIFY COLUMN `ColumnName` datatype(length);

Ex :

Alter TABLE `tbl_users` MODIFY COLUMN `dup` VARCHAR(120);

CodeJaeger.com

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.

Powered by:

X