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?

Author: DineshDB, 2011-02-28

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..

 270
Author: marc_s,
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.

 13
Author: Sathish,
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.

 10
Author: Xyed Xain Haider,
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.

 7
Author: Philippe Leybaert,
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 zapisywaniuTutaj wpisz opis obrazka

 3
Author: saktiprasad swain,
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)
 2
Author: NullException,
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...

 0
Author: Hardik,
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;
 -2
Author: Ismayil S,
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);
 -3
Author: user7743491,
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