Jak zmienić typ danych kolumn w bazie danych SQL bez utraty danych
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?
9 answers
Możesz to łatwo zrobić za pomocą następującego polecenia. Każda wartość 0 zostanie zamieniona na 0( BIT = false), Wszystko inne zostanie zamienione na 1 (BIT = true).
ALTER TABLE dbo.YourTable
ALTER COLUMN YourColumnName BIT
Inną opcją będzie utworzenie nowej kolumny typu BIT
, wypełnienie jej ze starej kolumny, a gdy skończysz, upuść starą kolumnę i zmień nazwę Nowej na starą nazwę. W ten sposób, jeśli coś podczas konwersji pójdzie nie tak, zawsze możesz wrócić, ponieważ nadal masz wszystkie dane..
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-27 21:28:17
Jeśli jest to poprawna zmiana.
Możesz zmienić właściwość.
Tools -- > Options --> Designers --> table and Database designers --> Uncheck -- > Prevent saving changes that required table re-creation.
Teraz możesz łatwo zmienić nazwę kolumny bez odtwarzania tabeli lub utraty rekordów ur.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-10 10:50:57
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)
Uwaga: Jeśli istnieje rozmiar kolumn, po prostu napisz również rozmiar.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-15 19:35:26
Dlaczego myślisz, że stracisz dane? Po prostu przejdź do Management Studio i zmień typ danych. Jeśli istniejąca wartość może być przekonwertowana na bool (bit), zrobi to. Innymi słowy, Jeśli "1 "mapuje na true, a" 0 " Na false w oryginalnym polu, wszystko będzie dobrze.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-27 21:19:59
Przejdź do opcji tool-Option-designers-table and Database designers i odznacz opcję Zapobiegaj zapisywaniu
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-31 06:05:34
Jeśli używasz T-SQL( MSSQL); powinieneś wypróbować ten skrypt:
ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5)
Jeśli używasz MySQL; powinieneś wypróbować ten skrypt:
ALTER TABLE [Employee] MODIFY COLUMN [Salary] NUMERIC(22,5)
Jeśli używasz Oracle; powinieneś wypróbować ten skrypt:
ALTER TABLE [Employee] MODIFY [Salary] NUMERIC(22,5)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-21 13:32:37
W wersji compact będzie pobierał Rozmiar automatycznie dla typu danych datetime tj. (8), więc nie ma potrzeby ustawiania rozmiaru pola i generowania błędu dla tej operacji...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-07 07:34:13
Mogę zmodyfikować typ danych pola table za pomocą następujących zapytań: a także w Oracle DB,
ALTER TABLE table_name
MODIFY column_name datatype;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-20 05:25:07
Zastąp typ danych bez utraty danych
alter table tablename modify columnn newdatatype(size);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-21 09:05:03