Mam bazę danych SQL Server i właśnie zdałem sobie sprawę, że mogę zmienić typ jednej z kolumn z int
na bool
.
Jak mogę to zrobić bez utraty danych, które zostały już wprowadzone do tej tabeli?
sql-server
sql-server-2008
alter
Ivan Stoyanov
źródło
źródło
Odpowiedzi:
Możesz to łatwo zrobić za pomocą następującego polecenia. Każda wartość 0 zostanie zamieniona na 0 (BIT = fałsz), wszystko inne zostanie zamienione na 1 (BIT = prawda).
Inną opcją byłoby utworzenie nowej kolumny typu
BIT
, wypełnienie jej ze starej kolumny, a kiedy skończysz, upuść starą kolumnę i zmień nazwę nowej na starą. W ten sposób, jeśli coś podczas konwersji pójdzie nie tak, zawsze możesz wrócić, ponieważ nadal masz wszystkie dane.źródło
NULL
pozostajeNULL
,0
staje sięFalse
, niezerowe wartości (1, -1, 1999, -987 ...) stają sięTrue
.Uwaga: jeśli istnieje rozmiar kolumn, po prostu wpisz również rozmiar.
źródło
Jeśli jest to poprawna zmiana.
możesz zmienić właściwość.
Teraz możesz łatwo zmienić nazwę kolumny bez ponownego tworzenia tabeli lub utraty swoich rekordów.
źródło
Jak myślisz, dlaczego stracisz dane? Wystarczy przejść do Management Studio i zmienić typ danych. Jeśli istniejącą wartość można przekonwertować na bool (bit), zrobi to. Innymi słowy, jeśli „1” odwzoruje na true, a „0” odwzoruje na false w oryginalnym polu, nic ci nie będzie.
źródło
jeśli używasz T-SQL (MSSQL); powinieneś wypróbować ten skrypt:
jeśli używasz MySQL; powinieneś wypróbować ten skrypt:
jeśli korzystasz z Oracle; powinieneś wypróbować ten skrypt:
źródło
Idź do Tool-Option-designer-Table and Database designer i Odznacz opcję Zapobiegaj zapisywaniu
źródło
Zmień typ danych kolumny z typem kontroli kolumny:
źródło
dla mnie, na serwerze SQL 2016, robię to w ten sposób
* Aby zmienić nazwę kolumny Kolumna1 na Kolumna2
* Aby zmodyfikować typ kolumny z ciągu na int :( Upewnij się, że dane mają poprawny format )
źródło
W wersji kompaktowej automatycznie przyjmuje rozmiar dla typu danych datetime, tj. (8), więc nie ma potrzeby ustawiania wielkości pola i generowania błędu dla tej operacji ...
źródło
Mogę zmodyfikować typ danych pola tabeli za pomocą następującego zapytania: a także w Oracle DB,
źródło
Zamień typ danych bez utraty danych
źródło