2016-08-07 56 views
1

In MySQL habe ich eine CHAR (1) -Spalte mit 'T' und 'F' für True und False. Ich möchte dies in einer einzigen SQL-Anweisung in eine TINYINT (1) -Spalte mit 1 und 0 konvertieren. Wie kann ich das tun, ohne eine neue Spalte zu erstellen? Wenn ichBoolesche Spalte in Ganzzahl konvertieren

tun
alter table my_table modify my_column tinyint; 

dann nehme ich die automatische Konvertierung in all meinen Zeilen führen wird mit 0 ersetzt Wie kann ich eine Umwandlungstabelle während des Spaltentypen Änderung angeben?

Antwort

3

Mit einem Befehl? Ich bezweifle, dass es möglich ist, ohne eine neue Spalte zu erstellen? Sie können dies versuchen:

Sie können es in zwei Schritten tun - zunächst alles auf Zahlen konvertieren, und dann versuchen, die Spalte (ungetestet) Modifizieren:

UPDATE my_table t 
SET t.my_column = CASE WHEN t.my_column = 'T' THEN '1' 
               ELSE '0' 
        END; 

alter table my_table modify my_column tinyint;