How to change column datatype in SQL database without losing data

前端 未结 11 2350
迷失自我
迷失自我 2020-12-02 06:55

I have SQL Server database and I just realized that I can change the type of one of the columns from int to bool.

How can I do that withou

相关标签:
11条回答
  • 2020-12-02 07:01

    In compact edition will take size automatically for datetime data type i.e. (8) so no need to set size of field and generate error for this operation...

    0 讨论(0)
  • 2020-12-02 07:02

    Why do you think you will lose data? Simply go into Management Studio and change the data type. If the existing value can be converted to bool (bit), it will do that. In other words, if "1" maps to true and "0" maps to false in your original field, you'll be fine.

    0 讨论(0)
  • 2020-12-02 07:03

    Alter column data type with check type of column :

    IF EXISTS(
           SELECT 1
           FROM   sys.columns
           WHERE  NAME = 'YourColumnName'
                  AND [object_id] = OBJECT_ID('dbo.YourTable')
                  AND TYPE_NAME(system_type_id) = 'int'
       )
        ALTER TABLE dbo.YourTable ALTER COLUMN YourColumnName BIT
    
    0 讨论(0)
  • 2020-12-02 07:06

    if you use T-SQL(MSSQL); you should try this script:

    ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5)
    

    if you use MySQL; you should try this script:

    ALTER TABLE [Employee] MODIFY COLUMN [Salary] NUMERIC(22,5)
    

    if you use Oracle; you should try this script:

    ALTER TABLE [Employee] MODIFY [Salary] NUMERIC(22,5)
    
    0 讨论(0)
  • 2020-12-02 07:08

    for me , in sql server 2016, I do it like this

    *To rename column Column1 to column2

    EXEC sp_rename 'dbo.T_Table1.Column1', 'Column2', 'COLUMN'
    

    *To modify column Type from string to int:( Please be sure that data are in the correct format)

    ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2  int; 
    
    0 讨论(0)
  • 2020-12-02 07:09

    You can easily do this using the following command. Any value of 0 will be turned into a 0 (BIT = false), anything else will be turned into 1 (BIT = true).

    ALTER TABLE dbo.YourTable
       ALTER COLUMN YourColumnName BIT
    

    The other option would be to create a new column of type BIT, fill it from the old column, and once you're done, drop the old column and rename the new one to the old name. That way, if something during the conversion goes wrong, you can always go back since you still have all the data..

    0 讨论(0)
提交回复
热议问题